質問

GAC に DLL を再インストールしようとしています。すべてが正常に動作しているようですが、それにアクセスしている Web アプリケーションはまだ古いものを使用しているようです。

古い DLL は、わずかな編集が加えられただけで新しい DLL と同じバージョンです。50 の異なるサイトで使用されるため、バージョンを変更してから web.config 内の参照を変更することは問題ではありません。 良い 解決。

すでに 50 のサイトが実行されており、引き続き再起動する必要があるため、IIS サーバーまたはワーカー プロセスを再起動することはできません。

私の何が間違っているのか、あるいはこの状況を改善するために何ができるのか知っている人はいますか?

役に立ちましたか?

解決

私の知る限り、更新された DLL への新しい参照を取得するには、IIS を再起動する必要があります。最善の策は、トラフィックの少ない時間にリセットを実行することです。負荷分散を使用して複数のサーバーを実行している場合は、すべての接続が閉じられるまで、新しい接続が 1 つのサーバーに到達するのを防ぐことができます。その後、DLL を更新し、IIS を再起動して、サーバーを接続プールに戻します。エンド ユーザーにダウンタイムが見えないように、サーバーごとにこの手順を繰り返します。

他のヒント

アプリケーション プールについては言及していないため、古いバージョンの IIS を使用していると仮定します。その場合、DLL を参照する各サイト内のすべての DLL を「タッチ」する必要があります。

問題は、コードがすでにロードされており、アプリケーションを再ロードするための非侵入的な方法を見つける必要があることです。これを行うには、アプリ プールのリサイクルが効果的な方法です。アプリ プールのない古い IIS を使用している場合は、/bin/ フォルダーまたは web.config ファイル内の last-modified ファイルを更新すると、他のサイトに影響を与えることなくアプリケーションが再読み込みされます。

したがって、上記のことを行うための何らかのスクリプトが必要です。必要なのは、すべての /bin アプリケーション ディレクトリ内の DLL の lastmodified を更新することだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top