web-dev-qa-db-ja.com

アセンブリバインディングログを有効にするにはどうすればよいですか?

「ファイルまたはアセンブリ「Bla」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。」

詳細情報の一部には次のように記載されています。

"WRN:アセンブリバインドログがオフになりました。アセンブリバインドエラーログを有効にするには、レジストリ値[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)を1に設定します。アセンブリバインドエラーログを使用します。この機能をオフにするには、レジストリ値[HKLM\Software\Microsoft\Fusion!EnableLog]を削除します。 "

そのため、上記のエラーが発生する理由についていくつかの洞察を得ることができると思います(おそらく次のYSODには失敗の正確な理由に関するより明確な情報が含まれている可能性があります)、私はレジストリ内のその場所に移動しましたが、そのようなキーはありません私が見ることができます。持っているものは:

\Fusion 
    (Default)   value not set
    \GACChangeNotification
    \NativeImagesIndex
    \PublisherPolicy

私は何が欠けていますか?

46
B. Clay Shannon

失敗したバインディングの調査を開始する適切な場所は、「fuslogvw.exe」ユーティリティを使用することです。これにより、バインドの失敗に関連して必要な情報が得られるため、レジストリ値をいじってバインドロギングをオンにする必要はありません。

Fuslogvw MSDNページ

ユーティリティは、Microsoft SDKフォルダーにあります。これは、オペレーティングシステムに応じて、次のようになります。 "C:\ Program Files(x86)\ Microsoft SDKs\Windows\v {SDK version} A\Bin\FUSLOGVW.exe "

1)このユーティリティ(GUIがあります)を実行し、設定を「ディスクへのバインドエラーのログ」に設定します。

2)[すべて削除]をクリックして、以前のバインド失敗のリストをクリアします

3)アプリケーションのバインディングエラーを再現する

4)ユーティリティで、[更新]をクリックします。バインドの失敗がリストに記録されるのを確認する必要があります。

5)リストでバインド障害を選択し、「ログの表示」をクリックすると、バインド障害に関する情報を表示できます。

私が最初に探すのは、アプリケーションがアセンブリを探すパスです。また、問題のアセンブリのバージョン番号が予想どおりであることを確認する必要があります。

55
Scampbell

Fusionキーの下に新しいDWORD(32)を作成するだけです。 DWORDにEnableLogという名前を付け、値1に設定します。その後、IISを再起動し、エラーが発生したページを更新すると、アセンブリバインドログがエラーメッセージに表示されます。

20
pierce.jason
  1. 新しいアプリケーションプールを作成する

  2. このアプリケーションプールの詳細設定に移動します

  3. 32ビットアプリケーションを有効にするをTrueに設定する

  4. この新しいプールを使用するようにWebアプリケーションを指定します

Screenshot (IIS-ApplicationPool)

5
Ajay Shankar

上記のpierce.jasonの答えごとに、私は運が良かった:

Fusionキーの下に新しいDWORD(32)を作成するだけです。 DWORDの名前をLogFailuresに設定し、値1に設定します。その後、IISを再起動し、エラーが発生したページを更新すると、アセンブリバインドログがエラーメッセージに表示されます。

2
Robert_T_Taylor

新しいアプリケーションプールを作成する代わりに、既存のアプリケーションプール-> 右クリックして[詳細設定]-> [32ビットアプリケーションを有効にする] ----- Set to- TRUE

1
Debendra Dash

同じ問題が発生したときに、そのプロジェクトの既存のkey.snkを削除し、新しいキーを追加して修正しました。

1
Madhu Mca

アプリケーションの異なるバージョンを時々実行する場合、実行中のバージョンで必要ない場合は、アプリケーションのbinディレクトリから「Bla」を削除してください。

1
Myles Baker

私にとって「Bla」ファイルはSystem.Net.http dllで、BINフォルダーにありませんでした。私はそれを追加しただけでうまくいきました。レジストリキーやそのようなものは変更しませんでした。

1
alwaysabeginner

このエラーは、クライアントからサーバーdllを呼び出すときにWindowsアプリケーションで発生します。システムの再起動後、正常に動作します

0
Sivashankar