58

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

详细信息的一部分说:

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

因此,考虑到这可能会让我对为什么会出现上述错误有所了解(也许下一个 YSOD 将包含有关它失败的确切原因的更明确的信息),我导航到注册表中的那个位置,但是没有这样的键我可以看到。它所拥有的是:

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

我错过了什么?

4

9 回答 9

68

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

Fuslogvw MSDN 页面

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

  1. 以管理员身份运行此实用程序,从开发人员命令提示符(以管理员身份)键入FUSLOGVW一个新屏幕

  2. 转到设置并选择启用所有绑定到磁盘,还选择启用自定义日志路径并选择您选择的文件夹的路径来存储绑定日志。

  3. 重新启动 IIS。

  4. 在 FUSLOGVW 窗口中单击全部删除以清除任何先前绑定失败的列表

  5. 在您的应用程序中重现绑定失败

  6. 在实用程序中,单击Refresh。然后,您应该会看到列表中记录的绑定失败。

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

我首先要查找的是应用程序在其中查找程序集的路径。您还应该确保所讨论的程序集的版本号是您所期望的。

于 2013-07-16T16:29:24.410 回答
25

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

于 2015-04-13T15:59:50.907 回答
9
  1. 创建一个新的应用程序池

  2. 转到此应用程序池的高级设置

  3. 将启用 32 位应用程序设置为 True

  4. 让您的 Web 应用程序使用这个新的池

屏幕截图(IIS-ApplicationPool)

于 2016-04-07T14:54:42.247 回答
3

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

于 2018-12-14T13:26:43.113 回答
2

根据上面 pierce.jason 的回答,我很幸运:

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

于 2015-11-04T16:31:02.383 回答
1

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

于 2013-12-31T16:51:47.123 回答
1

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

于 2014-09-09T11:29:26.900 回答
1

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

于 2016-04-27T13:56:58.510 回答
0

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

于 2019-02-21T16:56:26.583 回答