Tuesday, January 30, 2007

The type initializer for * threw an exception

The type initializer for *inserta tu clase favorita aqui* threw an exception

Me estaba volviendo loco con este error, no se encuentra mucha informacion sobre esto, debi haber usado mis poderes psiquicos antes

El escenario es un servicio web (.net 2.0) que manda llamar (muy dentro) un codigo que usa refleccion para instanciar algunas clases, el mismo codigo funciona bien dentro de una aplicacion web, y eso es lo raro, que tan diferente es un servicio web a una aplicacion web en cuestion de permisos y seguridad?

pero bueno, casi desde el principio sospeche que se trataba de un problema con los permisos, pero el hecho de que era un servicio web, y que el mismo codigo funcionaba bien en la aplicacion web me hizo dejar esta opcion hasta el final, busque bastante y no encontre ninguna respuesta, luego decidi configurar otro usuario en IIS para correr mi servicio, y listo, todo corrio bien.

ok, ahora ya se que el problema es con permisos, pero no me gusta mucho el "parche", asi que seguire buscando e intentando algunas cosas haber si encuentro una solucion mas elegante.

tip gratis para aquellos que no sepan
pon "The type initializer for * threw an exception" en google... viste, que bonito? google acepta comodines (wildcards) para hacer busquedas, tambien funciona con multiples comodines en una frase

4 comments:

Anonymous said...

ajaja y la solucion?

tengo el mismo problema =(

BlackTigerX said...

la solucion fue:
"luego decidi configurar otro usuario en IIS para correr mi servicio, y listo, todo corrio bien."

un usuario que tuviera mas derechos, en IIS configuras para que ese usuario corra tu servicio

Anonymous said...

yo tengo el mismo problema pero con una aplicación de consola y con el System.Configuration.

Anonymous said...

Yo encontré la solución a mi problema, espero les ayude.
En mi caso, fui a revisar la clase que estaba fallando. Entonces, por inicializador de tipo entendí el Constructor de la clase, y me dí cuenta que justo allí iba a leer al archivo App.Config por unos parámetros y éstos no estaban, ya que alguien pisó el archivo con un App.Config más viejo.
En resumen, entiendo que el mensaje aparece si hay algún error en el constructor de la clase que acusa el mensaje error (que iría en el * del título de este Post).
Saludos.