c# - studio - BadImageFormatException durante el problema de carga del ensamblado.Net
iis enable asp net (3)
Cuando trato de acceder a una página (default.aspx) en un sitio web en IIS 7.0 (desarrollado utilizando VSTS 2010 + .Net 4.0 en Windows Server 2008), me encontré con el siguiente mensaje de error. ¿Alguna idea de lo que está mal? ¿Qué significa BadImageFormatException?
Por cierto: estoy ejecutando Windows Server 2008 de 64 bits (no R2) y aún no he activado Windows Server 2008, ¿podría ser una causa raíz?
[BadImageFormatException: Could not load file or assembly ''test.foo'' or one of its dependencies. Try to load bad formatted program. ] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192 System.Reflection.Assembly.Load(String assemblyString) +35 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +118 [ConfigurationErrorsException: Could not load file or assembly ''test.foo'' or one of its dependencies. Try to load bad formatted program. ] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11392147 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +484 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +127 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +334 System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1087 [HttpException (0x80004005): Could not load file or assembly ''test.foo'' or one of its dependencies. Try to load bad formatted program. ] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11524352 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4782309
¿Su sitio web utiliza el DefaultAppPool? Si es así, intente configurar el grupo de aplicaciones de su sitio web a ASP .Net v4.0, o si está usando un grupo de aplicaciones personalizado, verifique que esté ejecutando .net framework 4.0
Acabo de recibir esto cuando implemento DLL de 32 bits en un servidor de 64 bits que ejecuta IIS 7.
Para solucionarlo, tuve que configurar "Habilitar aplicaciones de 32 bits" en Verdadero en la Configuración avanzada de mi grupo de aplicaciones.
La BadImageFormatException
se BadImageFormatException
cuando se puede encontrar el archivo de ensamblaje, pero no es un ensamblaje adecuado o está dañado. Por ejemplo, si envió los archivos al servidor por FTP y se interrumpió la transferencia, es posible que el archivo DLL se haya transferido solo parcialmente, lo que provocó este error.
En 64 bits frente a 32 bits: cuando usa P / Invoke o COM Interop, algunos bloggers informan que el cambio a una compilación de destino específica puede ayudar a su situación. Esto significa que: si interactúa con una dll de 32 bits, asegúrese de compilar para x86
, forzándolo a ejecutarse bajo WoW32, de lo contrario recibirá esta excepción. Esta corrección se confirma aquí y here .
De forma alternativa, puede configurar todo el sistema para que tenga un valor predeterminado de 32 bits ejecutando el comando:
Ldr64.exe setwow
desde el directorio Framework64
.
Una solución común es reconstruir el archivo, o al menos volver a publicarlo.