【问题标题】:Getting BadImageFormatException from other exception's StackTrace从其他异常的 StackTrace 获取 BadImageFormatException
【发布时间】:2011-01-27 09:51:43
【问题描述】:

在我的服务器中,我遇到了一个异常,我发现它似乎没问题。

问题是,当我编写它的 StackTrace 时,我得到了 BadImageFormatException

我尝试调试服务器。捕获异常时停在断点上,我可以看到它的所有字段,但在 StackTrace 中我看到了 BadImageFormatException。

任何想法是什么导致了这个问题?

我的服务器详情 -

它是用 C# 和 .NET FW 4 编写的。
我还使用了用托管 C++ 编写的 FrameWork。
我将我的服务器编译到 x86 平台。并在 x64 机器上运行服务器。

完整的 BadImageFormatException -

System.BadImageFormatException:方法的参数和签名不匹配。 在 System.Reflection.RuntimeParameterInfo.GetParameters(IRuntimeMethodInfo 方法句柄,MemberInfo 成员,签名 sig,ParameterInfo& returnParameter,布尔 fetchReturnParameter) 在 System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters() 在 System.Reflection.RuntimeMethodInfo.GetParameters() 在 System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat) 在 System.Environment.GetStackTrace(异常 e,布尔需要文件信息) 在 System.Exception.GetStackTrace(布尔需要文件信息) 在 System.Exception.ToString(布尔需要文件线信息) 在 System.Exception.ToString() 在 log4net.ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap, Object obj, TextWriter writer) 在 log4net.ObjectRenderer.RendererMap.FindAndRender(Object obj, TextWriter writer)

【问题讨论】:

  • BadImageFormatException 只有几个可能的原因。最有可能的是,您尝试使用具有不兼容版本的 .NET Framework 或已针对不同平台(32 位与 64 位)编译的两个组件/程序集。要真正回答这个问题,我们需要更多与上述相关的信息。例如,我从堆栈跟踪中看到您正在使用 log4net。与您的应用程序相比,它是为哪个平台编译的?是否有一个单独编译的库伴随您的应用程序等。
  • 不是 log4net 造成的。在调试模式下,我也看不到有问题的异常的 StackTrace。
  • 其中一个程序集中的元数据有问题。没有文件损坏,这必须由它们的构建方式引起。

标签: c# x86 stack-trace badimageformatexception


【解决方案1】:

你使用 Spring.NET 吗?最近我在 WCF 中实现 IErrorHandler 以记录异常时遇到了同样的问题,在我的情况下,问题出在 Spring.NET 中。我已将 Spting.NET 更新到 1.3.1 版,现在可以正常使用了。

来自更新日志 [SPRNET-1284] - IL 代码生成可能导致 Windows 2008 中的 System.BadImageFormatException

【讨论】:

    【解决方案2】:

    如果您的执行进程以 x86 运行(如果设置为 anycpu 并在 win32 位机器上运行),但在某处它试图加载已明确编译为 x64 的程序集,则会发生这种情况。反之亦然。 x64(或 x64 机器上的 anycpu)尝试加载显式 x86 编译程序集。

    【讨论】:

      【解决方案3】:

      某些混淆器在注入无效元数据时可能会导致此异常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 1970-01-01
        相关资源
        最近更新 更多