4

Web サイトの展開で問題が発生しています。シャドウ コピーは、以前の展開の問題とサイトの展開後にオフになります。

具体的には、展開時にapp_offline.htm、サイト/アプリケーションがオフラインであることをコピーして確認した後でも、ファイルbin/*.dllがロックされていることがよくあります。

appdomainシャドウ コピーをオフにしても、DLLがアンロードされたときに DLL のロックが解放されることを期待しapp_offline.htmます。

のコンテンツを削除しようとする直前に変更 ( への ) が取得されるのを防ぐことを目的とした一時的なweb.config見つかったを展開しようとしました 新しい をコピーした後、 一時停止することさえあります。Stack Overflowbin/bin/10sweb.config

?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <httpRuntime waitChangeNotification="300"
       maxWaitChangeNotification="300"/>
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"  />
  </system.webServer>
</configuration>

アプリケーション プール (プロセス) が dll のロックの所有者であることをハンドル ユーティリティで確認したw3wp.exeので、これがファイルを削除/上書きできない理由であると想定しています。アプリプールを手動でリサイクルすると、解放され、問題なく展開できます。残念ながら、展開プロセスの一部として、app_offline をコピーして web.config を変更することは可能ですが、IISappcmd のリサイクルを実行することは (アクセス許可/グループ ポリシーの理由から) できないため、Web だけでこのロックを解放できる必要がありapp_offline.htmます。構成。

シャドウ コピーをオンに戻すと、この特定の問題は「解決」されますが、DLL でロックがまだ保持されている場合。しかし、問題を先延ばししているだけなのだろうかと心配しています。古いdllのロックがappdomain再度ロードされたときに解放されない限り?

プロセスIDをコピーしapp_offline.htmてもw3wp、ハードリサイクルのように変更されませんが、ロックされているappdomainものを解放する必要があるものをアンロードしていると思います。bin/ files

もう 1 つの興味深い点は、これは実稼働サーバーでのみ発生するように見えることです。ローカルまたは開発/ステージング サイトで再現することはできません。app_poolsまたはconfigとの構成の違いはないと思いますが、IISこれが原因でこの動作が発生する可能性があります。

また、明確にするためshadowCopyBinAssembliesに、この問題が発生することなく(同じ展開プロセスで)3年以上falseに設定されているため、最近起こった何かがこれを引き起こしたように感じますが、何が原因かわかりません.

これを解決する方法、または何が原因であるかについてのアイデアをありがとう。

(サーバーはIIS7またはだと思います7.5)

4

1 に答える 1