Frage

Auf meinem Server bekomme ich eine Ausnahme, die ich fange, und es scheint in Ordnung zu sein.

Das Problem ist, dass ich, wenn ich es schreibe Stacktrace Ich erhalte Badimageformatexception.

Ich habe versucht, den Server zu debuggen. Als ich die Ausnahme auf einen Breakpoint angehalten habe, kann ich alle Felder sehen, aber in der Stacktrace sehe ich die BadimageFormatexception.

Irgendwelche Ideen, was für dieses Problem verursacht?

Meine Serverdetails -

Es ist in C# mit .NET FW 4 geschrieben.
Ich verwende auch Framework, das in Managed C ++ geschrieben ist.
Ich kompile meinen Server auf X86 -Plattform. Und führen Sie den Server auf X64 -Maschine aus.

Die vollständige badimageformatexception -

System.BadimageFormatexception: Die Parameter und die Signatur der Methode stimmen nicht überein. bei System.reflection.RuntimeParameterinfo.GetParameters (IRuntimemethodinfo Methodhandle, Mitgliedinfo -Mitglied, Signature Sig, Parameterinfo & returnParameter, boolean FetchRetRetraNParameter () bei System. .ToString (TraceFormat TraceFormat) at system.environment.getStacktrace (Ausnahme E, boolean bedürftige Bedefilefo) bei System.Exception.GetStacktrace (boolean bedürftigeInfo) bei System.Exception.toString (boolean BedarfIelelineInfo). Objectrenderer.defaultrenderer.renderObject (rendermap rendermap, Object OBJ, Textwriter -Autor) unter log4net.objectrenderer.renderermap.findandrender (Objekt OBJ, Textwriterautor)

War es hilfreich?

Lösung

Verwenden Sie Spring.net? Vor kurzem hatte ich das gleiche Problem, als ich IErrorHandler in WCF implementierte, um Ausnahmen zu protokollieren, und in meinem Fall war das Problem in Spring.net. Ich habe spting.net auf Version 1.3.1 aktualisiert und jetzt funktioniert es gut.

Von ChangeLog [SPRnet -1284] - IL -Codegenerierung kann zu System führen. BadimageFormatexception in Windows 2008

Andere Tipps

Dies geschieht, wenn Ihr Ausführungsvorgang als X86 ausgeführt wird (falls auf AnyCPU eingestellt und auf einer Win32 -Bit -Maschine ausgeführt wird), aber irgendwo in der Straße versucht sie, eine Baugruppe zu laden, die explizit als x64 zusammengestellt wurde. X64 (oder AnyCPU auf X64 -Maschine) versucht, eine explizite X86 -kompilierte Baugruppe zu laden.

Einige Verschleierung können diese Ausnahme ausführen, wenn sie ungültige Metadaten injizieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top