none
App Silverlight embebida en SharePoint 2010 no conecta con el servicio WCF RRS feed

  • Pregunta

  • Hola,

    Tengo un servicio en WCF .net4 con un metodo HolaMundo, desplegado con un basicHttpBinding en un servidor IIS 7.5

    http://servidorA/servicios/hola.svc

    el servicio funciona bien, probado con el wcfTestClient y el SoapUI. He comprobado que se puede llamar desde diferentes máquinas de mi dominio.

    Por otro lado, tengo una app Silverlight 4 que hace uso del servicio y que ejecuto desde otra máquina del mismo dominio: Cliente1. Como es normal, al principio no conectaba con el servicio, ya que era necesario el crossdomain.xml (o clientaccesspolicy.xml). He añadido el fichero en la raíz del IIS del servidorA (http://servidorA/crossdomain.xml). La definición del fichero es la típica que he copiado de msdn para que lo permita TODO venga del dominio que venga. Al meter el fichero, la app SL, al ejecutarla desde el depurador de VS, dentro de la web que monta el asistente de Visual Studio, ya conecta con el servicio, y funciona OK.

    Sin embargo, si inserto la app de SL dentro de SharePoint2010 (usando el webpart estándar para SL), la app NO conecta con el servicio siempre que cargue la página de SharePoint desde cualquier IE que esté en máquinas distintas al servidorA (que es donde tengo el servicio montado).

    La descripción del error, es la misma que me daba cuando no tenía el fichero crossdomain.xml, y que parece apuntar al mismo tema de cross-domain. Pero es que la app de SL desde la máquina cliente1, ejecutada dentro de VS, sí que conecta bien con el servicio, y además, ya he probado mil combinaciones posibles con los ficheros crossdomain.xml y clientaccesspolicy.xml y sigue fallando.

    Alguna idea?

    Muchas gracias,
    Saludos.

    lunes, 25 de julio de 2011 15:52

Respuestas

  • Hola David,

    Sí, los .svc están en otra máquina y el .xap, en una biblioteca de otro servidor sharepoint. Como bien dices, el xml está en la raíz del IIS que hospeda el .svc.

    Finalmente he conseguido que funcione, pero en otro servidor SharePoint ¿? Ni idea de los motivos, igual algo de configuración, algún parche que falta o sobra, vete a saber :)

    En cuaqluier caso, muchas gracias por la ayuda.

    Un saludo!

    • Marcado como respuesta Luis Mañez jueves, 28 de julio de 2011 9:47
    jueves, 28 de julio de 2011 9:47

Todas las respuestas

  • Hola amigo,

    Has probado realizar "clase" de tu web service... utiliza el svutil.exe...

    Escribes lo siguiente en la linea de comandos de visual studio:

    svcutil http://servidorA/servicios/hola.svc

    Quitas la referencia de servicio de tu aplicacion e insertas esta clase, y a mi me ha funcionado muy bien.

    Solo recuerda configurar bien el end point en el web.config.

    Saludos,


    Profesional Microsoft VIP | México
    miércoles, 27 de julio de 2011 3:41
  • Hola Luisman.

    Si la aplicacion silverlight esta dentro del mismo dominio no hace falta el archivo de politica, solo es necesario para usarla desde un dominio diferente.

    Ahora bien, Sharepoint crea directorios virtuales, asegurate de que se inserta en el directorio raiz del sitio web, no en un directorio virtual.

    Ademas, prueba a ejecutar la aplicacion OOB (Out of browser) con permisos elevados, ya que en ella se permite comunicacion entre dominios (esto asegura que es un problema del archivo de politicas)


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    miércoles, 27 de julio de 2011 6:32
  • hola david, gracias por la respuesta.

    En principio no veo q Sharepoint necesite el crossdomain.xml, ya que es un mero contenedor de la app SL. Es como si el xap se hospedase en una web de asp.net, pero en SharePoint. Por lo q he visto el crossdomain.xml se coloca en la raiz del servidor donde están los servicios web. Y ahí es donde lo tengo. de todas formas, tb lo he probado en el raiz del dominio del servidor de SharePoint y no ha solucionado nada :(

    Si meto el .xap en una app web en un IIS 7, y la llamo desde cualquier PC cliente, la cosa funciona bien.

    En cuanto ese .xap, lo subo a una biblioteca de docs de SharePoint y lo llamo desde el webpart de SL que viene de serie con SP, la cosa deja de funcionar. Es decir, la app SL se carga, pero cuando pulso el botón que invoca al servicio WCF (q está en una máquina distinta), me aparece el error del crossdomain. Pero OJO, sí que funciona, si la página de SharePoint que hospeda el .xap, la invoco desde el IE, de la máquina en la que están alojados los servicios. En ese único caso, todo funciona como debería.

    Es una locura.

    No sé como lanzar la app con permisos elevados, pero casi seguro q funcionará, xq hospedado el xap en una app web, funciona bien.

    Alguna otra idea??

    gracias de nuevo!!

     

    miércoles, 27 de julio de 2011 10:49
  • Hola Luisman.

    Con tanta maquina ya no se donde esta cada cosa :).

    Creo haber leido que los servicios WCF no estan en sharepoint, sino en otro dominio diferente ¿esto es cierto?.

    Hay que tener en cuenta que el archivo de politica debe estar en el servidor de los servicios WCF y no en el que suministra la aplicacion silverlight


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    miércoles, 27 de julio de 2011 16:38
  • Hola David,

    Sí, los .svc están en otra máquina y el .xap, en una biblioteca de otro servidor sharepoint. Como bien dices, el xml está en la raíz del IIS que hospeda el .svc.

    Finalmente he conseguido que funcione, pero en otro servidor SharePoint ¿? Ni idea de los motivos, igual algo de configuración, algún parche que falta o sobra, vete a saber :)

    En cuaqluier caso, muchas gracias por la ayuda.

    Un saludo!

    • Marcado como respuesta Luis Mañez jueves, 28 de julio de 2011 9:47
    jueves, 28 de julio de 2011 9:47