Question

Dans mon serveur je reçois une exception que je surprends et il semble être ok.

Le problème est que quand j'écris son StackTrace Je reçois BadImageFormatException .

J'ai essayé de déboguer le serveur. Arrêté sur un point d'arrêt lors de la capture à l'exception, je peux voir tous ses champs, mais dans le StackTrace je vois le BadImageFormatException.

Toutes les idées Quelles sont les causes de ce problème?

Mes coordonnées du serveur -

Il est écrit en C # .NET avec FW 4.
Je l'utilise aussi FrameWork qui est écrit en C ++ géré.
Je compile mon serveur à la plate-forme x86. Et exécuter le serveur sur la machine x64.

Le plein BadImageFormatException -

System.BadImageFormatException: Les paramètres et la signature de la méthode ne correspond pas. à System.Reflection.RuntimeParameterInfo.GetParameters (IRuntimeMethodInfo methodHandle, membre MemberInfo, Signature sig, ParameterInfo & returnParameter, Boolean fetchReturnParameter) à System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters () à System.Reflection.RuntimeMethodInfo.GetParameters () à System.Diagnostics.StackTrace.ToString (TraceFormat traceFormat) à System.Environment.GetStackTrace (Exception e, Boolean needFileInfo) à System.Exception.GetStackTrace (Boolean needFileInfo) à System.Exception.ToString (Boolean needFileLineInfo) à System.Exception.ToString () à log4net.ObjectRenderer.DefaultRenderer.RenderObject (RendererMap rendererMap, objet obj, écrivain TextWriter) à log4net.ObjectRenderer.RendererMap.FindAndRender (Object obj, écrivain TextWriter)

Était-ce utile?

La solution

Utilisez-vous Spring.NET? Récemment, j'ai eu le même problème lors de la mise en œuvre IErrorHandler dans WCF exceptions journaux et mon problème de cas était Spring.NET. J'ai mis à jour à la version 1.3.1 Spting.NET et maintenant il fonctionne très bien.

de changelog [SPRNET-1284] - la génération de code IL peut entraîner System.BadImageFormatException dans Windows 2008

Autres conseils

Cela se produit si votre processus d'exécution est en cours d'exécution comme x86 (si elle est définie à anycpu et en cours d'exécution sur une machine à win32bit), mais quelque part sur la route, il tente de charger un ensemble qui a compilé comme x64 explicitement .. ou vice versa. X 64 (ou anycpu sur machine x64) tente de charger un x86 explicite compilé assemblage.

Certains obfuscators peuvent provoquer cette exception quand ils injectent des métadonnées non valides.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top