从其他异常的StackTrace获取BadImageFormatException

时间:2011-01-27 09:51:43

标签: c# x86 stack-trace badimageformatexception

在我的服务器中,我收到一个异常,我抓住它似乎没问题。

问题在于,当我写 StackTrace 时,我得到 BadImageFormatException

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

任何想法导致此问题的原因是什么?

我的服务器详细信息 -

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

完整的BadImageFormatException -

System.BadImageFormatException:方法的参数和签名不匹配。    在System.Reflection.RuntimeParameterInfo.GetParameters(IRuntimeMethodInfo methodHandle,MemberInfo成员,签名sig,ParameterInfo& returnParameter,Boolean fetchReturnParameter)    在System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters()    在System.Reflection.RuntimeMethodInfo.GetParameters()    在System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat)    在System.Environment.GetStackTrace(例外e,布尔needFileInfo)    在System.Exception.GetStackTrace(Boolean needFileInfo)    在System.Exception.ToString(Boolean needFileLineInfo)    在System.Exception.ToString()    at log4net.ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap,Object obj,TextWriter writer)    at log4net.ObjectRenderer.RendererMap.FindAndRender(Object obj,TextWriter writer)

3 个答案:

答案 0 :(得分:5)

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

来自changelog的

[SPRNET-1284] - IL代码生成可能导致Windows 2008中出现System.BadImageFormatException

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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