posts - 52,  comments - 33,  trackbacks - 2
  Monday, June 16, 2008

Hasta la salida de la Beta 2 de Silverlight, cuando queríamos con la Beta 1 realizar una llamada un Servicio Web o WCF sabíamos que debíamos de colorar los ficheros Crossdomain.xml o ClientAccessPolicy.xml en el raíz del Sitio Web donde estuviese el Servicio a consumir por Silverlight. Silverlight por defecto irá a buscar el fichero ClientAccessPolicy.xml y sino lo encuentra buscará el Crossdomain.xml

Si hacemos pruebas desde Silverlight Beta2, nos encontraremos que aun teniendo estos ficheros, recibimos el siguiente error depurando:

SLBeta2WS

El formato del fichero ClientAccessPolicy.xml que teníamos hasta ahora con el que conseguíamos que funcionase era:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Pero para esta versión necesitamos realizar un sutil cambio en el fichero:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Ahora si que funciona nuestro Silverlight.

Vamos por partes. Máquina con Windows Vista y Microsoft Visual Studio 2008 recién instalado. Creamos un nuevo sitio web y cuando queremos depurar, nos encontramos con esto:

NoEncuentralocalhost

¿Qué será?....El problema esta en el puñetero IPv6, y ¿Cómo deshabilitar esto?

Abrimos Regedit.exe y en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters añadimos un DWORD de nombre DisabledComponents y asignamos el valor decimal 255.

Después de reiniciar he conseguido que funcione, a pesar de que aunque el ASP.NET Development Server levanta un puerto, en el IE 7 intenta acceder a otro!!

Otro día busco porqué!