Domanda

Nel mio assistente mi sto un'eccezione che mi cattura e sembra essere ok.

Il problema è che quando sto scrivendo il suo StackTrace Mi sto BadImageFormatException .

ho cercato di eseguire il debug del server. Fermato su un punto di interruzione quando cattura l'eccezione, riesco a vedere tutti i suoi campi, ma nel StackTrace vedo l'BadImageFormatException.

Tutte le idee che cosa causa di questo problema?

I miei dettagli del server -

E 'scritto in C # con .NET FW 4.
Io uso anche FrameWork che è scritto in C ++ gestito.
Compilo il mio server a piattaforma x86. Ed eseguire il server su x64 macchina.

La BadImageFormatException completa -

System.BadImageFormatException: I parametri e la firma del metodo non corrispondono. a System.Reflection.RuntimeParameterInfo.GetParameters (IRuntimeMethodInfo methodHandle, membri MemberInfo, Firma SIG, ParameterInfo & returnParameter, booleano fetchReturnParameter) a System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters () a System.Reflection.RuntimeMethodInfo.GetParameters () a System.Diagnostics.StackTrace.ToString (TraceFormat traceFormat) a System.Environment.GetStackTrace (Exception e, booleano needFileInfo) a System.Exception.GetStackTrace (booleano needFileInfo) a System.Exception.ToString (booleano needFileLineInfo) a System.Exception.ToString () a log4net.ObjectRenderer.DefaultRenderer.RenderObject (RendererMap rendererMap, Object obj, TextWriter scrittore) a log4net.ObjectRenderer.RendererMap.FindAndRender (Object obj, TextWriter scrittore)

È stato utile?

Soluzione

Non si utilizza Spring.NET? Recentemente ho avuto lo stesso problema in sede di attuazione IErrorHandler in WCF alle eccezioni di registro e nel mio caso è stato problema in Spring.NET. Ho aggiornato alla versione 1.3.1 Spting.NET e ora funziona benissimo.

dal changelog [SPRNET-1284] - IL generazione di codice può causare System.BadImageFormatException in Windows 2008

Altri suggerimenti

Questo avviene se il processo di esecuzione è in esecuzione come x86 (se impostato a AnyCPU e in esecuzione su una macchina win32bit) ma da qualche parte lungo la strada cerca di caricare un assembly che ha compilato esplicitamente x64 .. o viceversa. x64 (o AnyCPU sulla macchina x64) tenta di caricare un sistema x86 esplicito compilato assemblaggio.

Alcuni obfuscators possono causare questa eccezione quando si iniettano metadati non validi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top