web-dev-qa-db-ja.com

IISおよびDFSのasmxWebServiceでファイルまたはアセンブリを読み込めませんでした」

2つの同一のWindowsServer2003ボックスでホストされているASMXWebサービスがいくつかあります。 Webサービスの仮想ディレクトリはDFS共有にロードされ、両方のサーバーが同じ共有を指します。インターネットと2つのWebサーバーの間にロードバランサーがあります。

ユーザーがWebサービスのメソッドにアクセスしようとすると、一見ランダムな間隔(現在は週に2回程度)で、IISは、「ファイルまたはアセンブリを読み込めませんでした」というエラーを返します。メソッド呼び出しで使用されるアセンブリの数であり、アプリプールがリサイクルされるまで、メソッドが呼び出されるたびにレポートを続けます。

この問題の識別可能なパターンは見つかりませんでした。これは私が知っていることです:

  • 不足しているアセンブリはさまざまです(ただし、常に自作のアセンブリです)
  • 失敗するWebサービスの方法はさまざまです
  • 問題が発生する時間または間隔に目立ったパターンはありません
  • 問題が発生したときにサーバーにアクセスする管理者ユーザーがいない
  • 失敗したメソッドは、両方が同じbinフォルダーを指している場合でも、一方のサーバーでは正しく機能し、もう一方のサーバーでは失敗します。
  • この問題は、アプリプールをリサイクルし、他の変更を加えないことでいつでも修正できます。

アセンブリバインダーログを有効にしましたが、バインダーがファイルの正しい場所を探していることがわかりました。

私たちのアセンブリは.Net3.5用にコンパイルされています。

1
Jesse McDowell

同様の問題がありました。

何が起こっているのかを公式に把握することはありませんでしたが、問題をweb.configの偽装レベルと、アセンブリファイルをホストするフォルダーへのユーザーアクセスに絞り込みました。

IISワーカープロセスが、Webリクエストにアクセスするユーザーとしてアセンブリを読み込もうとすることがあることを発見しました。アセンブリを読み込もうとしたスレッドが、現在、作成しているユーザーになりすましていることがわかりました。 asp.netページの1つへのリクエスト。

とにかく、ドメイン内の認証されたユーザーにアクセスを許可することで問題を回避しました。うまくいけば、あなたはより良い解決策を見つけることができます。

1
Jeff