para - test silverlight
Silverlight 4/.NET 4 Debugging cadenas de recursos (3)
¿Ya ha revisado el visor de eventos en la máquina donde se colgó la aplicación? Inicio-> Ejecutar. eventvwr
Recientemente me encontré con algo extraño. En algunos de los servidores de mi compañía cuando se imprime un mensaje de excepción (sí, es malo, lo sé. Es para la depuración), el mensaje real no se muestra. En cambio, muestra la clave de un recurso de cadena externo y dice que "Las cadenas de recursos de depuración no están disponibles"
Después de algunas investigaciones, se me ocurrió lo siguiente: en el modo de lanzamiento, Silverlight no empaqueta el xap con los dlls que contienen los mensajes de error reales para ahorrar espacio.
He encontrado soluciones para las versiones ANTIGUAS, pero nada para 4. Parece que hay versiones de desarrollador del SL 2 y 3 tiempo de ejecución que resolverá los errores automáticamente, pero no puedo encontrar uno para SL 4.
Así que mi pregunta es esta:
¿Qué diablos debo hacer en mi aplicación / computadora SL 4 para ver los errores completos y detallados cuando está en modo de lanzamiento?
Aunque es demasiado tarde para responder, puede ayudar a otra persona. Tenemos una aplicación web que usa Silverlight 4, instalada en varios entornos de prueba. Esta aplicación web consume más de un servicio WCF. Todos menos uno de los sitios del entorno de prueba fallaron consistentemente con el mensaje "Las cadenas de recursos de depuración no están disponibles". De acuerdo, la verdadera excepción fue tragada. Siendo una aplicación de Silverlight, no había ningún registro, y siempre parecía que había algo que fallaba en el componente de Silverlight. Conecté la aplicación en mi entorno de desarrollo a ese entorno de prueba en particular, y descubrí que el problema era, de hecho, en uno de los servicios de WCF. Solucioné el problema al final del servicio y el componente SL dejó de tener este problema.
¿Por qué falló la WCF?
El servicio WCF tenía el siguiente código en el constructor:
public MyService()
{
//Create an instance of Data Lookup service asycnchronously.
if (_dataLookupSrvc == null)
{
try
{
System.Threading.Tasks.Task.Factory.StartNew(() => _dataLookupSrvc = new LookupDataService.LookupDataService());
}
catch (Exception ex)
{
_log.Error<Exception>(ex);
}
}
}
Alguien movió el LookupDataService.dll subyacente desde la carpeta del servicio causando el error del constructor, pero no de inmediato. Como la instancia de LookupDataService se creó con un método anónimo, nunca se realizó el registro de excepciones en este método. Una vez que el LookupDataService.dll se colocó en la carpeta del servicio, el mensaje "Cadenas de recursos de depuración no están disponibles" desapareció.
¡Fue una divertida y loca búsqueda!
Puede descargar el runtime del desarrollador (que contiene las cadenas de excepción completas) de la página GetStarted - http://www.silverlight.net/getstarted/ - buscar "Developer Runtimes para Windows y OSX", está cerca de la parte inferior de la página .