viernes, 15 de julio de 2011

Publicar Servicio Web para Silverlight

Si te ha aparecido el siguiente error tratando de publicar tu aplicación Silverlight que utiliza servicios de WCF, esto quiza te pueda intersar

"
Se ha producido un error al intentar realizar una solicitud al URI 'http://localhost/XXXXX/XXXXXXX/XXXXXXService.svc'.
Puede deberse a un intento de acceso a un servicio de configuración entre dominios sin una política
entre dominios adecuada en contexto o una política no apropiada para servicios SOAP.
Es posible que necesite ponerse en contacto con el propietario del servicio para publicar un archivo de política
entre dominios y para asegurarse de que permite enviar encabezados HTTP relacionados con SOAP. Este error también puede deberse al uso de tipos internos en el proxy de servicios web sin utilizar el atributo InternalsVisibleToAttribute. Para obtener más información, consulte la excepción interna."

Sucede que Silverlight de forma predeterminada por seguridad sólo permite llamadas a servicios dentro del mismo dominio de la aplicación, un dominio de la forma http://Midominio.com unicamente podra acceder a servicios que esten dentro de ese mismo dominio, ejemplo:

.- Cuando estamos en nuestro ambiente de desarrollo muy probablemente los End Point de los servicios que estemos consumiendo esten apuntando a "localhost"












La configuración de nuestra referencia al servicio quiza se vea del tipo :



Cuando intentamos publicar nuestro sitio Web resulta que contrario a nuestro ambiente de desarrollo estariamos indicando el nombre del dominio o de nuestro servidor y entonces empezaran los problemas, nuestra aplicación sí iniciara pero el consumir los servicios no sera posible.

La solución a este problema es utilizar los mecanismos que Silverlight nos ofrece para acceder a servicios entre dominios que son:

1) Archivo crossdomain.xml válido
2) Archivo clientaccesspolicy.xml

Adicionalmente cuando publiquemos nuestro sitio publicado debera apuntar a "NOMBRESERVIDOR" pues aun cuando ellos esten en el mismo servidor y dentro de nuestro sitio Web tendremos un pequeño dolor de cabeza si continuamos utilizando "localhost". Al cambiar los End- point y la configuración de la referencia de servicio será suficiente para quitar este error y poder publicar nuestra aplicación web que consume servicios de WCF.

Aqui dejo unas referencias que a mi me ayudaron

http://msdn.microsoft.com/es-es/library/cc197955(v=VS.95).aspx

http://msdn.microsoft.com/es-es/library/cc197940(v=VS.95).aspx

No hay comentarios:

Publicar un comentario