BadImageFormatException: Konnte nicht geladen, Datei oder assembly ... schlechte format - Nur mit Web-Anwendung
Arbeite ich an einer Web-Anwendung auf einem Windows 8 64-bit-Computer mit mehreren Bibliotheken. Will ich mit zwei C# - DLLs, die auf eine native DLL. Sowohl C# - DLLs kompiliert werden, für 64-bit-Nutzung und getestet in test-Anwendungen.
Meine web-Anwendung verweist sowohl C# - DLLs und soll zur Ausführung in IIS 8.
Ich fügte hinzu, die zwei C# - DLLs als Verweise auf das Projekt und die native-DLL manuell in den bin-Ordner der web-app. Wenn ich build und run der Lösung bekomme ich die exception angezeigt in den Titel.
Ich weiß, dass dies ein Zeichen für ein problem mit 32-bit und 64-bit-code läuft in einem Prozess. Deshalb habe ich versucht, alle anderen build-Konfigurationen, aber das Ergebnis hat sich nie geändert.
Erstellte ich eine Konsole-Anwendung, die tut genau das, was ich bin versucht in der web app und es funktionierte einwandfrei.
Die Web-Anwendung mit den exakt gleichen Einstellungen jedoch wirft die Ausnahme, das ist, was ist wirklich verwirrend für mich.
Was ich bisher ausprobiert:
- Ändern Anwendungspool-Einstellung auf "enable 32-bit applications"
- Bauen alle DLLs mit Jeder CPU, 64-bit oder x86-target
- Überprüfen Sie die corflags aller DLLs
Kann ich einen export des Projektes für alle bereit, mir zu helfen Holen Sie sich diese Konfiguration läuft!!!
Ich bin wirklich dankbar für jedes bisschen Hilfe!
- Hast du eine Lösung noch für dieses? Denn wir erleben auch das gleiche problem, und wir haben noch nicht gefunden eine funktionierende Lösung bis jetzt.
- Hi Saeed, sorry für meine späte Antwort. Da mein Projekt wurde eine web-app, habe ich beschlossen, erstellen Sie eine zweite web-Anwendung als webservice, macht die Funktionalität der nativen dll zur Verfügung, die über REST. Ich fand keine andere Lösung für das problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie versucht mit der Einstellung Ziel-Plattform (Build-option in den Projekt-Eigenschaften)?
Werfen Sie auch einen Blick auf diese Artikel:
http://www.codeproject.com/Articles/383138/BadImageFormatException-x86-i-x64
Ich habe das gleiche Problem auf meiner Anwendung. Es wurde behoben, nachdem ich die führen Sie die folgenden Schritte aus:
* Erteilung der Genehmigung für die "Anonyme" Benutzer in meinem web-site-Ordner.
* Ändern Sie den Anwendungspool aus ".NET v4.5 Classic" zu ".NET v4.5".
Alle die ich anbieten kann, ist eine Hilfe bei der Bestimmung, was nicht laden. Wenn es ein dev-server kann es sinnvoll sein, zu installieren, in das entsprechende sdk zu verwenden, die Fusion Log Viewer. Wenn das nicht eine option, die Sie aktivieren können, assembly binding logging aus der Registrierung wie folgt:
nur sicher sein, schalten Sie es aus, wenn Sie fertig sind, es ist eine performance-penalty durch die Montage binden-Protokollierung. Stellen Sie sicher, dass der Ordner existiert, bevor Sie geben Sie die Registrierungsschlüssel und-Recycling der application-pool der Anwendung für die Protokollierung zu starten. Dies wird Ihnen eine detaillierte Liste, welche dll (oder Abhängigkeit, da es nicht immer leicht ersichtlich, ob es eine Abhängigkeit oder die dll die in der Fehlermeldung aufgeführt) nicht geladen wurden und wo es versucht zu laden es aus.
Ihre Partitionierung der Anwendungen, die die Lösung des Problems lässt vermuten, dass es mehrere Abhängigkeiten für die Montage auf verschiedene Versionen und da nur eine einzige version einer assembly geladen werden kann, in eine app-Domäne einige Abhängigkeiten nicht zufrieden sein. Für die verwalteten Assemblys, man könnte eine assembly binding redirect, aber ich weiß nicht, was der nicht verwalteten äquivalent wäre, wenn es überhaupt existiert.