2011-01-27 48 views
1

在我的服務器中,我收到一個異常,我發現它似乎沒有問題。從其他異常的StackTrace中獲取BadImageFormatException

的問題是,當我在寫它的堆棧跟蹤我得到BadImageFormatException

我試着調試服務器。捕獲異常時停止在斷點上,我可以看到它的所有字段,但在StackTrace中,我看到了BadImageFormatException。

任何想法是什麼導致這個問題?

我的服務器的詳細信息 -

這是寫在C#和.NET FW 4.
我也用這是寫在託管C++框架。
我將我的服務器編譯爲x86平臺。並在x64機器上運行服務器。

全BadImageFormatException -

System.BadImageFormatException:這些參數和方法的簽名不匹配。 在System.Reflection.RuntimeParameterInfo.GetParameters(IRuntimeMethodInfo methodHandle,的MemberInfo構件,簽名Sig,的ParameterInfo & returnParameter,布爾fetchReturnParameter) 在System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters() 在System.Reflection.RuntimeMethodInfo.GetParameters() 在System.Diagnostics.StackTrace.ToString(traceFormat traceFormat) 在System.Environment.GetStackTrace(例外五,布爾needFileInfo) 在System.Exception.GetStackTrace(布爾needFileInfo) 在System.Exception.ToString(布爾needFileLineInfo) 在系統.Exception.ToString() at log4net.ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap,Object obj,Te xtWriter作家) 在log4net.ObjectRenderer.RendererMap.FindAndRender(obj對象,TextWriter的作家)

+0

[`BadImageFormatException`](http://msdn.microsoft.com/en-us/library/system.badimageformatexception.aspx)只有幾個可能的原因。最有可能的是,您嘗試使用兩個組件/程序集與.NET Framework的不兼容版本或已針對不同平臺(32位與64位)編譯的組件/程序集。要真正回答這個問題,我們需要更多與上述相關的信息。例如,我從堆棧跟蹤中看到您正在使用log4net。針對您的應用程序編譯了哪個平臺?有沒有一個單獨編譯的庫,伴隨着你的應用程序等 – 2011-01-27 10:29:05

+0

不log4net casues它。在調試模式下,我也看不到有問題的異常的StackTrace。 – Maxim 2011-01-27 10:43:11

回答

4

你使用Spring.NET嗎?最近,我在使用WCF中的IErrorHandler記錄異常時遇到了同樣的問題,而在我的案例中,問題出現在Spring.NET中。我已經將Spting.NET更新到了1.3.1版,現在它工作正常。

從更新日誌 [SPRNET-1284] - IL代碼生成會導致System.BadImageFormatException在Windows 2008

1

出現這種情況,如果你的執行進程正在運行,爲86(如果設置爲anycpu和win32bit機器上運行),但地方的道路它會嘗試加載一個明確編譯爲x64的程序集,反之亦然。 x64(或x64機器上的anycpu)會嘗試加載顯式x86編譯程序集。

1

當他們注入無效的元數據有些混淆器可能會導致此異常。