C# 用于诊断生产中System.Data程序集引发的BadImageFormatException异常的工具?

C# 用于诊断生产中System.Data程序集引发的BadImageFormatException异常的工具?,c#,.net,clr,desktop-application,C#,.net,Clr,Desktop Application,我在Windows桌面应用程序的生产计算机上遇到以下异常: 无法加载文件或程序集的System.Data,版本=4.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089'或其 依赖关系文件已损坏。(来自HRESULT的异常:0x801310E) 我知道可能有多种原因,如平台不匹配、目标.net framework不匹配等。但是,我可以在生产机器上运行哪些工具/检查来确定原因?事实上,应用程序是64位的。因此,仔细研究一下,在IIS7中应用程序池的高级设置中找

我在Windows桌面应用程序的生产计算机上遇到以下异常:

无法加载文件或程序集的System.Data,版本=4.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089'或其 依赖关系文件已损坏。(来自HRESULT的异常:0x801310E)


我知道可能有多种原因,如平台不匹配、目标.net framework不匹配等。但是,我可以在生产机器上运行哪些工具/检查来确定原因?

事实上,应用程序是64位的。因此,仔细研究一下,在IIS7中应用程序池的高级设置中找到一个名为“启用32位应用程序”的选项。

设置为true后,一切正常工作

注意:如果您想在IIS6中使用此功能,请注意IIS6不支持“每个应用程序池”的功能。因此,如果将IIS6设置为32位,则其所有应用程序池都将以32位模式运行。如果您想在“每个应用程序池”的基础上进行设置,则必须升级到IIS7。 要将IIS6设置为32位,请执行以下操作:

  • 打开命令提示符并导航到 %systemdrive%\Inetpub\AdminScripts目录
  • 输入以下命令:
  • cscript.exe adsutil.vbs将W3SVC/AppPools/Enable32BitAppOnWin64设置为“true” 在某些情况下,上面命令中的“true”似乎需要替换为1。
    有时还需要重置IIS。

    90%是由于x86或x64体系结构问题。先试试这个。很难看出你是如何从这封邮件中得到BadImageFormatException的。这远远超出了那个例外,没有什么微妙的“文件已损坏”通知。这是一个非常不寻常的例外,我在过去8年中第一次看到它。我会理解它的意思,最好尽快更换硬盘。请访问superuser.com,获取有关如何诊断磁盘问题的建议。