在我的服务器中,我收到一个异常,我抓住它似乎没问题。
问题在于,当我写 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)
答案 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)
某些混淆器在注入无效元数据时可能会导致此异常。