Marc Rubiño

ASP.NET, C#, AJAX.NET, JavaScript, etc.

April 2011 - Artículos

Error en IIS BadImageFormatException

Subiendo una aplicación web al servidor me encontré con un error muy raro y que hasta el momento no me había pasado nunca.

Error System.BadImageFormatException !!!

La página del error en el IIS es:

 

La aplicación hasta ese momento estaba funcionando y después de añadirle un nuevo ensamblado  Masivos.Application.Interfaces dejó de funcionar. Lo curioso es que en el servidor de desarrollo funcionaba perfectamente, pero en el servidor de Pre no había manera que funcionara.

Lo primero que tenemos que saber es que la máquina de desarrollo estaba corriendo en un Windows7  32bits y el servidor de Pre en un Windows Server 2008 R2 64 bits.

La configuración de la solución

Lo primero que hay que mirar es la configuración de la solución.

 

A simple vista se ve algo raro, justamente el proyecto que está fallando esta compilando siempre en x86 y eso no es lo correcto, la compilación tendría que ser igual que el resto de proyectos de librerías para Any CPU. Lo peor de todo es que al intentar modificar esta configuración no aparece la opción y solo permite compilar para x86.

El porqué de todo esto

El error está bastante claro: Una DLL o aplicación ejecutable se carga como un ensamblado de 64 bits, pero contiene características o recursos de 32 bits. Por ejemplo, usa la interoperabilidad COM o llama a métodos en una biblioteca de vínculos dinámicos de 32 bits.  http://msdn.microsoft.com/es-es/library/system.badimageformatexception.aspx.

Mis intentos para solucionar el problema pasaron por:

1.       intentar obligar al pool de aplicaciones del IIS en que la solución corriera en x86. FAIL !!

2.       Intentar por todos los medios que el proyecto de Interfaces se compilara en Any CPU. FAIL!!

 

La Solución

 

Lo que me mosqueaba era porque motivo un proyecto de librería no me dejaba poder establecer la compilación en Any CPU y la respuesta surgió cuando el que creó el proyecto comento que en principio seleccionó la plantilla de consola y luego modifico el proyecto a librerías.   Argggg !!!!!

 

 Visual Studio cuando crea un proyecto de consola siempre lo configura como x86 y la única manera de poder cambiar esto es modificando a mano la configuración del proyecto. Pues la solución rápida fue crear un nuevo proyecto directamente de librería y copiar todos los ficheros al nuevo proyecto.  Una vez todos los ensamblados compilados en 64bits el deploy funcionó y todos felices.

Experiencias del día a día de un desarrollador ;-)

 

¡Enhorabuena MVP de Microsoft 2011!

MVP

Despues de tantos años participando en las comunidades intentando compartir mi granito de arena me ha llegado el famoso email de Microsoft .

Enhorabuena. Nos complace presentarle el programa de nombramiento MVP de Microsoft® de 2011. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa su experiencia de alta calidad y de la vida real con otras personas. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de ASP.NET a lo largo del pasado año.

Para mí es un placer recibir este reconocimiento por parte de Microsoft y no hace más que animarme a continuar con mi empeño de poder compartir mis experiencias y aprender de tantas otras de mis pares.

No se si es una promesa o una amenaza pero seguiré intentando aportar todo lo que pueda como lo he estado haciendo todos estos años.

Muchas gracias a todos los que me habéis apoyado durante todo este tiempo y a todos los MVP’s nuevos y a los que habéis renovado para este año.

Gracias a Todos !!

 CrossPosting: http://mrubino.net

 

Posted: 3/4/2011 16:32 por Marc Rubiño | con 10 comment(s)
Archivado en: ,