ユーザーに手間をかけずに.NETWebアプリケーションをIIS(7.5)に展開しようとしています。Disable Overlapped RecycleがFalseであることを確認しましたが、それでも毎回同じ問題が発生します。
サイトに新しいバイナリをアップロードするたびに、IISは新しいバイナリを開始する前にワーカープロセスを強制終了します。したがって、新しいバイナリをアップロードするたびに、ユーザーは次のエラーメッセージを受け取ります。
'/'アプリケーションのサーバーエラー。ファイルまたはアセンブリ'MyApplicationWeb'またはその依存関係の1つを読み込めませんでした。別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。(HRESULTからの例外:0x80070020)
これをシームレスに行う方法がわかりません。今はバイナリをアップロードするだけです。ただし、アップロード(またはローカルコピー)が発生している間は、上記の動作が得られます。Webガーデンも使ってみましたが、同じ結果になりました。
私が探していないもの:
- 外部ロードバランサーを使用して解決する方法(これは機能的なソリューションですが、パフォーマンス的には少数のサーバーにとっては悪いソリューションであり、サーバーが1つしかない場合はまったく機能しません)
- カスタムエラーページを更新してハックアラウンドを作成する方法(明らかな問題がいくつかありますが、さらに重要なことに、Webサービス/ ajaxではまったく機能しません)。
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/24e3c22e-79a9-4f07-a407-dbd0e7f35432.mspx?mfr=trueを考えると、これは実行可能であると本当に思います。
更新:上記の記事で彼らは言う:
ただし、シャットダウンまたはスタートアップのシャットダウンタイムアウト値は構成可能であるため、制限時間内に既存の要求の処理が完了しない場合は、要求の処理中にワーカープロセスを終了できます。
この値がどこにあるのか、デフォルトが何なのかわかりません。それが数秒未満の場合、それは私の結果を説明するかもしれません。
ps。SF /ウェブマスターなどではなく、SOに投稿しているのは、開発に積極的でない人の間では、この種の知識はおそらく最小限になると思うので、これで大丈夫だと思います。