質問
私は Web パブリッシングには慣れていませんが、頻繁に使用される Web サイトに対してパブリッシュするのは初めてです。以前は、このサーバー上のアプリが頻繁にアクセスされることはありませんでしたが、需要の高いアプリケーションを展開しています。では、ライブ Web サーバーに公開するためのベスト プラクティスは何でしょうか?
- 人々がそこにいない真夜中まで待つのが最善です(はい、私はそれにかなり頼ることができます - それはイントラネットであり、したがって、使用されない時間があります)
- トランクに新しい更新が行われたときに公開します(もちろんビルドの成功に応じて)
- 2 が true の場合、誰かがその特定のページまたは DLL を使用しており、それが上書きされると問題があると考えられます。
...この種のことに最適な場所はたくさんあると思いますが、正しい Google 検索用語を使用しませんでした。
解決
@Nick DeVore は次のように書きました。
2が真である場合、誰かがその特定のページまたはDLLを使用していて、上書きされた場合、それは悪いように思えます。
ASP.NET スタック (Web フォーム、MVC、または独自のスタック) を使用している場合は、すべての aspx ファイルがコンパイルされるため、Web サーバーによって操作されないため、実際には問題になりません。/bin/ フォルダーは別の場所に完全にシャドウされているため、内部のライブラリは Web サーバーによっても使用されません。
IIS は、すべてのリクエストが完了するまで待機し (ただし、タイムアウトが発生します)、その後、(必要に応じて) コンパイルを続行し、AppDomain を再起動します。少数のファイルのみが変更された場合は、AppDomain の再起動さえ行われません。IIS は、新しいアセンブリ (またはコンパイルされた aspx/asmx/ascx ファイル) を既存の AppDomain に読み込みます。
@Nick DeVore は次のように書きました。
これをもう少し理解するのを手伝ってください。これがMicrosoftから説明されている場所に私を指してください。ありがとう!
Google で「IIS AppDomain」キーワードを検索してみてください。見つけました ASP.NET プログラマがアプリケーション ドメインについて知っておくべきこと.
他のヒント
私たちはほとんどの更新を深夜に行っています。
便利なヒントとして、これが ASP.NET サイトの場合は、ロールアウトする時間を問わず、サイトがメンテナンスのために停止していることをユーザーに説明するメッセージを含む App_Offline.htm ファイルをドロップしてください。
Scott Guthrie の詳細情報はこちら:
http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx