ファイルまたはアセンブリ 'Bla'またはその依存関係の1つをロードできませんでした。不正な形式のプログラムを読み込もうとしました」と表示されます。
詳細情報の一部を見ると
"WRN: アセンブリバインディングのロギングがオフになっています。 アセンブリ結合の失敗のログを有効にするには、レジストリ値HKLM\Software\MicrosoftFusion!EnableLogを1に設定してください。 注:アセンブリバインディング失敗のロギングには、パフォーマンス上の問題があります。 この機能をオフにするには、レジストリ値[HKLM\Software\MicrosoftFusion!EnableLog]."を削除してください。
そこで、なぜ上記のようなエラーが出るのかを知る手がかりになるかもしれないと思い、レジストリのその場所に移動してみましたが、そのようなキーは見当たりませんでした。あるのは
\Fusion
(Default) value not set
\GACChangeNotification
\NativeImagesIndex
\PublisherPolicy
何が足りないのでしょうか?
失敗したバインディングの調査を開始するには、"fuslogvw.exe"ユーティリティを使用するのが良いでしょう。これにより、バインディングの失敗に関連する必要な情報が得られ、バインディングログを有効にするためにレジストリ値をいじる必要がなくなるかもしれません。
このユーティリティは、Microsoft SDKのフォルダに入っているはずで、OSによっては以下のようになっています。 "C:Program Files (x86)\Microsoft SDKs\Windows\v{SDK version}A\Bin\FUSLOGVW.exe".
このユーティリティ(GUI付き)を起動し、設定を "Log bind failures to disk" にします。
"Delete all"をクリックすると、過去のバインド失敗のリストが消去されます。
あなたのアプリケーションでバインド失敗を再現する
ユーティリティーでRefreshをクリックします。そうすると、リストにバインドエラーが記録されていることが確認できます。
一覧表でバインド失敗を選択し、"View Log"をクリックすると、バインド失敗に関する情報を見ることができます。
まず、アプリケーションがアセンブリを探す際のパスを確認します。また、問題のアセンブリのバージョン番号が期待するものであることを確認する必要があります。
1。 新しいアプリケーションプールを作成します。
2。 このアプリケーションプールの詳細設定に移動します。
3。 Enable 32ビットアプリケーションをTrueに設定します。
4。 この新しいプールを使用するようにWebアプリケーションをポイントします。
私にとって「Bla」ファイルはSystem.Net.http dllでしたが、BINフォルダーから欠落していました。 追加しただけで問題なく動作しました。 レジストリキーやそのようなものは変更しませんでした。
このエラーは、クライアントからサーバーdllを呼び出すときにWindowsアプリケーションで発生します。 システムの再起動後、正常に動作します。