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

Registry 如何启用程序集绑定日志记录?,registry,regedit,assemblybinding,ysod,Registry,Regedit,Assemblybinding,Ysod,我得到,“无法加载文件或程序集'Bla'或其依赖项之一。试图加载格式不正确的程序。” 部分详细信息显示: 警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。 注意:程序集绑定失败日志记录会带来一些性能损失。 要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]。” 因此,考虑到这可能会让我了解为什么会出现

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

部分详细信息显示:

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

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

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

我遗漏了什么?

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

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

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

  • 转到设置并选择启用所有磁盘绑定还选择启用自定义日志路径并选择要存储绑定日志的文件夹路径

  • 重新启动IIS

  • 在FUSLOGVW窗口中,单击“全部删除”,以清除所有先前绑定失败的列表

  • 在应用程序中重现绑定失败

  • 在实用程序中,单击刷新。然后,您将看到绑定失败记录在列表中

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


  • 我查找的第一件事是应用程序查找程序集的路径。您还应确保所讨论程序集的版本号符合您的预期。

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

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

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

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

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

  • 创建新的应用程序池

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

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

  • 指示web应用程序使用此新池


  • 您可以转到
    现有应用程序池->右键单击高级设置->启用32位应用程序----设置为

    对于我来说,“Bla”文件是System.Net.http dll,它在我的BIN文件夹中丢失。我刚刚添加了它,效果很好。没有更改任何注册表项或任何类似的内容。

    此错误是我在windows应用程序中从客户端调用服务器dll时出现的。重新启动系统后,它工作正常

    如果设置为只读,请尝试以管理员身份运行该工具。很好的回答,但它不会为我显示任何绑定失败,即使我启用了所有绑定的日志记录…如果您正在构建ASP.NET MVC应用程序(或者可能是任何其他涉及IIS的应用程序)需要重新启动IIS才能获取绑定日志。如果在日志查看器中看不到任何内容,则可以转到设置并选择“启用所有磁盘绑定”。然后创建一个可以授予所有权限的文件夹。在刚才选择的“日志设置”窗口中,选中“启用自定义日志路径”和刚才创建的文件夹的路径。重新启动IIS并浏览到您的站点。您可以看到logging now.FYI,我必须通过删除Internet临时文件来清除Internet Explorer缓存。我甚至不使用Internet Explorer。请参阅本页底部的说明如何创建DWORD(32)?使用regedit导航到Fusion键。在右侧窗格的空白处单击鼠标右键。展开“New”,您将看到“DWORD(32位)值”。这不是op所要求的。。。此配置将强制web应用程序以x32运行,即使在x64系统上也是如此。此应用程序中运行的编译为x64的DLL可能是根本问题,但此设置的影响远不止解决此问题。的可能重复