如何启用程序集绑定日志记录?

问题描述 投票:45回答:9

我得到了,“无法加载文件或程序集'Bla'或其中一个依赖项。试图加载一个格式不正确的程序。”

部分详细信息说:

“WRN:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败会导致一些性能损失要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。“

因此,考虑到这一点可能会让我深入了解为什么我收到上述错误(也许下一个YSOD会包含更明确的信息,说明它失败的原因),我导航到注册表中的那个位置,但是没有这样的键我能看到。它的作用是:

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

我错过了什么?

registry regedit assemblybinding ysod
9个回答
54
投票

开始调查任何失败绑定的好地方是使用“fuslogvw.exe”实用程序。这可能会为您提供与绑定失败相关的所需信息,这样您就不必乱用任何注册表值来打开绑定登录。

Fuslogvw MSDN page

该实用程序应位于您的Microsoft SDKs文件夹中,具体取决于您的操作系统:“C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v {SDK version} A \ Bin \ FUSLOGVW.exe “

1)运行此实用程序(它具有GUI)并将设置设置为“将绑定故障记录到磁盘”。

2)单击“全部删除”以清除以前任何绑定失败的列表

3)在您的应用程序中重现绑定失败

4)在该实用程序中,单击“刷新”。然后,您应该看到列表中记录的绑定失败。

5)您可以通过在列表中选择绑定失败并单击“查看日志”来查看有关绑定失败的信息

我要找的第一件事是应用程序在寻找程序集的路径。您还应该确保有问题的程序集的版本号是您所期望的。


20
投票

只需在Fusion键下创建一个新的DWORD(32)即可。将DWORD命名为EnableLog,并将其设置为值1.然后重新启动IIS,刷新页面给出错误,并在错误消息中显示程序集绑定日志。


5
投票
  1. 创建一个新的应用程序池
  2. 转到此应用程序池的“高级设置”
  3. 将Enable 32-Bit Application设置为True
  4. 指向您的Web应用程序以使用此新池


2
投票

Per pierce.jason上面的答案,我很幸运:

只需在Fusion键下创建一个新的DWORD(32)即可。将DWORD命名为LogFailures,并将其设置为值1.然后重新启动IIS,刷新页面给出错误,并且程序集绑定日志将显示在错误消息中。


1
投票

如果您有时运行不同版本的应用程序,请确保从应用程序bin目录中删除“Bla”(如果运行的版本不需要它)。


1
投票

当我遇到同样的问题时,我通过删除该项目中的现有key.snk并添加新密钥来修复它。


1
投票

您可以转到现有应用程序池 - >右键单击高级设置 - >启用32位应用程序-----设置为TRUE,而不是创建新应用程序池


1
投票

对我来说'Bla'文件是我的BIN文件夹中缺少的System.Net.http dll。我刚添加它,它工作正常。没有更改任何注册表项或任何类型的任何内容。


0
投票

从客户端调用服务器DLL时,在Windows应用程序中出现此错误。系统重启后,它工作正常

© www.soinside.com 2019 - 2024. All rights reserved.