从其他异常的 StackTrace 获取 BadImageFormatException
在我的服务器中,我遇到了一个异常,我发现它似乎没问题。
问题是,当我编写它的 StackTrace 时,我收到了 BadImageFormatException。
我尝试调试服务器。捕获异常时停在断点上,我可以看到它的所有字段,但在 StackTrace 中我看到 BadImageFormatException。
有什么想法会导致此问题吗?
我的服务器详细信息 -
它是用 C# 和 .NET FW 4 编写的。
我还使用用托管 C++ 编写的 FrameWork。
我将我的服务器编译为 x86 平台。并在 x64 机器上运行服务器。
完整的 BadImageFormatException -
System.BadImageFormatException:方法的参数和签名不匹配。 在 System.Reflection.RuntimeParameterInfo.GetParameters(IRuntimeMethodInfo methodHandle、MemberInfo 成员、Signature sig、ParameterInfo& returnParameter、布尔 fetchReturnParameter) 在 System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters() 在 System.Reflection.RuntimeMethodInfo.GetParameters() 在 System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat) 在 System.Environment.GetStackTrace(异常 e,布尔 needFileInfo) 在 System.Exception.GetStackTrace(布尔 needFileInfo) 在 System.Exception.ToString(Boolean needFileLineInfo) 在 System.Exception.ToString() 在 log4net.ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap,对象 obj,TextWriter writer) 在 log4net.ObjectRenderer.RendererMap.FindAndRender(对象 obj,TextWriter writer)
In my server I'm getting an exception which I catch and it seems to be ok.
The problem is that when I'm writing its StackTrace I'm getting BadImageFormatException.
I've tried to debug the server. Stopped on a breakpoint when catching the exception, I can see all its fields, but in the StackTrace I see the BadImageFormatException.
Any ideas what causes to this problem?
My server details -
It is written in C# with .NET FW 4.
I also use FrameWork which is written in Managed C++.
I compile my server to x86 platform. And run the server on x64 machine.
The full BadImageFormatException -
System.BadImageFormatException: The parameters and the signature of the method don't match.
at System.Reflection.RuntimeParameterInfo.GetParameters(IRuntimeMethodInfo methodHandle, MemberInfo member, Signature sig, ParameterInfo& returnParameter, Boolean fetchReturnParameter)
at System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters()
at System.Reflection.RuntimeMethodInfo.GetParameters()
at System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat)
at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Exception.GetStackTrace(Boolean needFileInfo)
at System.Exception.ToString(Boolean needFileLineInfo)
at System.Exception.ToString()
at log4net.ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap, Object obj, TextWriter writer)
at log4net.ObjectRenderer.RendererMap.FindAndRender(Object obj, TextWriter writer)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你使用Spring.NET吗?最近,我在 WCF 中实现 IErrorHandler 来记录异常时遇到了同样的问题,就我而言,问题出在 Spring.NET 中。我已将 Spting.NET 更新到版本 1.3.1,现在它工作正常。
来自变更日志
[SPRNET-1284] - IL 代码生成可能会导致 Windows 2008 中的 System.BadImageFormatException
Do you use Spring.NET? Recently I had the same problem when implementing IErrorHandler in WCF to log exceptions and in my case problem was in Spring.NET. I've updated Spting.NET to version 1.3.1 and now it works fine.
from changelog
[SPRNET-1284] - IL code generation can result in System.BadImageFormatException in Windows 2008
如果您的执行进程作为 x86 运行(如果设置为 anycpu 并在 win32 位计算机上运行),但在某个地方它尝试加载已明确编译为 x64 的程序集,则会发生这种情况,反之亦然。 x64(或 x64 机器上的任何 CPU)尝试加载显式 x86 编译的程序集。
This happens if your executing process is running as x86 (if set to anycpu and running on a win32bit machine) but somewhere down the road it tries to load an assembly that has explicitely compiled as x64.. or vice versa. x64(or anycpu on x64 machine) tries to load an explicit x86 compiled assembly.
某些混淆器在注入无效元数据时可能会导致此异常。
Some obfuscators can cause this exception when they inject invalid metadata.