2012-03-16 23 views
1

.NET 4.0(Visual Studio 2010を使用して作成された)には多数のWebアプリケーションが用意されています。これらのアプリケーションは、プリコンパイルされ、運用サーバーに展開されます。.NET Webアプリケーションのプリコンパイル済みの更新プログラムを展開しますか?

現在、更新を行う際に、既存のすべてのファイルを更新されたバイナリに置き換えます。これにより、アプリケーションが更新されますが、アプリケーションを再起動して、すべてのユーザーが再度ログインする必要があります。

デプロイされたバイナリは、基本的に私のソリューションのすべてのプロジェクトに対して単一の.dllで構成されています。

既存のユーザーを中断せずにWebアプリケーションを更新する方法はありますか?

これを行う方法の1つは、ソースファイルを配備して、それらをWebサーバーで即座にコンパイルすることですが、これは実際に実行可能なオプションではありません。

答えて

6

これは、CLRでAppDomainSetup.ShadowCopyFilesプロパティを使用してサポートされています。オンにすると、CLRはアセンブリをロードする前にコピーを作成します。したがって、コピーのみがロックされ、元のファイルは上書きされます。この機能は、AppDomainsを簡単にリサイクルするCLRホストであるASP.NET用に設計されています。どのように構成するかを示す優れたものがあります。MSDN article

+0

優秀、ありがとうございます。だから、これは単にweb.config内で「有効」にできるものではなく、実際にはアプリケーション自体でコンパイルする必要がありますか? – cusimar9

+0

私はShadowCopyFilesがデフォルトで有効になっていると信じています。したがって、私の問題は、私がファイルを更新するときにセッションが失われているように思えます。これにより、ユーザーはログアウトされます。これは期待される行動かどうか? – cusimar9

+2

@ cusimar9 - あなたの目標が、アプリケーションが更新されている間にセッションを保持することである場合、In-Procの代わりにStateServerセッションモードを試しましたか?有効にして使用するのは非常に簡単で、追加のソフトウェアは必要ありません(SqlServerモードとは逆です) – avs099

関連する問題