Excepciones en SilverLight 2 - Blog de Oskar Alvarez

Excepciones en SilverLight 2

Cuando estamos debugeando en Silverlight 2 y ocurre una excepcion, esta nos muestra el siguiente texto

 

An exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll but was not handled in user code
Additional information: [UnexpectedHttpResponseCode]
Arguments:Not Found
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=2.0.30226.2&File=System.ServiceModel.dll&Key=UnexpectedHttpResponseCode

Un texto nada descriptivo sobre el error que se ha producido, que no se nos muestre l texto completo de la excepción tiene su explicación, es para que el runtime de SilverLight pese menos a la hora de bajarlo, pero podemos configurar en nuestra máquina de desarrollo para que nos muestre el texto completo de la excepción.

 

Los assemblies del runtime de SilverLight estan instalados en el directorio C:\Program Files\Microsoft Silverlight\2.0.30226.2 Estos assemblies no contienen ningún string para las excepciones, de manera que cuando una excepción es lanzada y no es capturada se muestra el mensaje generico que hemos visto antes.

 

Silverlight runtime with debug resources installed

Como podemos ver en el directorio en-us aparece el assembly debug.resources.dll en este assembly es donde se encuentran los mensajes completos de las excepciones para activarlos debemos de modificar el manifiesto de silverlight, concretamente el archivo C:\Program Files\Microsoft Silverlight\2.0.30226.2\slr.dll.managed_manifest con lo siguiente para cada assembly

<localizedassembly>
   <name>System.ServiceModel.debug.resources</name>
   <version>2.0.5.0</version>
   <publickeytoken>31bf3856ad364e35</publickeytoken>
   <relfolder>.</relfolder>
   <file>System.ServiceModel.debug.resources.dll</file>
</localizedassembly>

Despues de esta modificación el mensaje de la excepcion sera

 

An exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll but was not handled in user code
Additional information: The remote server returned an unexpected response: (404) Not Found

Published 9/4/2008 14:27 por Oskar Alvarez
Comparte este post:
http://geeks.ms/blogs/oalvarez/archive/2008/04/09/excepciones-en-silverlight-2.aspx