lunes, 29 de septiembre de 2014

System.BadImageFormatException: No se puede cargar el archivo o ensamblado

Estoy acostumbrado a trabajar con servicios de windows programados bajo Delphi. Ultimamente conforme avanzan las versiones de Sistemas operativos windows estabamos teniendo ciertos problemas derivados de privilegios principalmente. En nuestro nuevo paso a las tecnologías Microsoft estoy intentando desarrollar un servicio utilizando VS2013 y windows Forms con c#. A primera vista nos proporciona soluciones para muchos "problemas" que pudiésemos encontrar como la gestión del usuario que lo ejecuta, la implementación de un "manifest" para controlar los accesos a ciertos recursos por parte del UAC (Control de Usuarios de windows).

Una vez que tenía definido mi primer ejemplo simple siguiendo las pautas definidas en:

http://msdn.microsoft.com/es-es/library/zt39148a(v=vs.110).aspx

Me encontré a la hora de instalar mi servicio el siguiente error:

Excepción al inicializar la instalación:
System.BadImageFormatException: No se puede cargar el archivo o ensamblado 'file
:///C:\Users\jmoreno\Documents\Visual Studio 2013\Projects\WindowsService1\Windo
wsService1\bin\Debug\WindowsService1.exe' ni una de sus dependencias. Se esperab
a que el módulo tuviera un manifiesto de ensamblado..


Mi problema es que estaba usando un ejecutable de InstallUtil de una versión no comptabible con el framework de mi proyecto.

Solución: Realicé una busqueda de la cadena "installutil.exe" en mi equipo. Cogí el fichero que estaba ubicado en la carpeta v40... correspondiente al frameWork 4.0. La copie en la carpeta debug de mi servicio y listo. Espero que os sirva.

Nota: Si estadais desarollando un proyecto con la versión 2. Tendrias que tomar el de la carpeta v2...


Mas información en:

http://msdn.microsoft.com/es-es/library/system.badimageformatexception(v=vs.110).aspx

martes, 16 de septiembre de 2014

Error de la validación del estado de vista MAC. Si un clúster o una granja de servidores web alojan esta aplicación ...

El error:

"Error de la validación del estado de vista MAC. Si un clúster o una granja de servidores web alojan esta aplicación, asegurése de que la configuracion <,machineKey>.."

puede deberse a que un conjunto de aplicacion comparte un pool del servidor web. Si una aplicación se encuentra un tiempo inactiva el identificador de "sesion" de la aplicación en el pool puede ser asignada a otra aplicación produciendo el error especificado. Este caso puede darse en servidores compartidos donde un pool es compartido por cuantiosas aplicaciones.

Solución:

La solución pasa por asignarnos nuestro propio identificador que no colisione con ninguna otra apliación y evitando el molesto mensaje.

1º- Para obtener un identificador accederemos a la url: http://aspnetresources.com/tools/machineKey

y pulsaremos en Generate Key. Obtendremos un resultado por pantalla como este:

<machineKey validationKey="4E96939B01AF5BF4DF800BF841A78F509DF1173511D6A7E53B5B1F874C2839082A12ECAE9B10725BC86A2E42828A5AAFDB4664DE37F52B36B0061379CD914459" decryptionKey="27958C048667A5F1FDA322026A88387E710EDA6AEA9D09EE9927C2BDAF0C1BC1" validation="SHA1" decryption="AES" />

Ya tenemos nuestro identificador-

2º Buscaremos el archivo web.config. Una vez localizado iremos a la seccion

<system.web> ... </system.web>. Dentro de esta sección pegaremos el identificador obtenido.

Con estos pasos resolveremos este molesto problema. Suerte y hasta otra.

Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...