none
¿Es posible crear un SPSite remoto? RRS feed

  • Pregunta

  • Hola,

    Estoy intentando crear un objeto SPSite de un sitio de SharePoint que se encuentra en otro servidor. Es decir, desde un servidor con WSS 3.0 estoy intentando ejecutar un código similar a ("strsite" es algo similar a http://XXX.YYY.ZZ.VV:80):

                    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        // get the site in impersonated context
                        using (SPSite site = new SPSite(strsite))
                        {
                            //Obtenemos la URL del site
                            strURL = site.Url.ToString();

                            // get the web in the impersonated context
                            //SPWeb web = site.OpenWeb(strweb);
                            SPWeb web = site.OpenWeb();

                            //Obtenemos el título de la Web
                            strTitulo=web.Title.ToString();

                            // Do your work here
                            web.Dispose();

                            blnCorrecto = true;
                        }
                    });

    ¿Es esto posible? Cuando intento esto mismo en el propio servidor, sin conectarme a otro equipo, funciona perfectamente, por lo que supongo que lo que intento no es posible.

    Obtengo el siguiente error al conectarme a un servidor remoto:

    NO SE ENCONTRÓ LA APLICACIÓN WEB EN HTTP://V.X.Y.Z:27323/. COMPRUEBE QUE ESCRIBIÓ LA DIRECCIÓN URL CORRECTAMENTE. SI LA DIRECCIÓN URL DA SERVICIO AL CONTENIDO EXISTENTE, PUEDE QUE EL ADMINISTRADOR DEL SISTEMA NECESITE AGREGAR UNA NUEVA ASIGNACIÓN DE SOLICITUD DE DIRECCIÓN URL A LA APLICACIÓN DESEADA.MICROSOFT.SHAREPOINT EN MICROSOFT.SHAREPOINT.SPSITE..CTOR(SPFARM FARM, URI REQUESTURI, BOOLEAN CONTEXTSITE, SPUSERTOKEN USERTOKEN) EN MICROSOFT.SHAREPOINT.SPSITE..CTOR(STRING REQUESTURL) EN COM.TCPSI.CAJACIRUCLO.BPM.SHAREPOINT.SHAREPOINTDOCS.CREARSITEABRIRWEB(STRING& STRMENSAJE).........

    Muchas gracias y un saludo a tod@s,

    José Miguel

    martes, 2 de marzo de 2010 17:36

Respuestas

Todas las respuestas

  • Hola José!

    No esta soportada la ejecución remota de codigo usando la API de SharePoint, para interactuar con tus sitios de SharePoint remotamente, debes utilizar los web services que todos los sitios exponen.

    La pagina oficial de referencia de Microsoft:

    http://msdn.microsoft.com/en-us/library/ms479390.aspx

    Y un link con un pequeño ejemplo del uso de los servicios:

    http://treenovum-wss.com/vpazo/Lists/Posts/Post.aspx?ID=28

    Saludos!
    Diego.
    martes, 2 de marzo de 2010 18:58
  • Muchas gracias por tu contestación Diego. Tengo una duda en relación a tu respuesta.

    Por la documentación que he visto en enlace que me indicas (http://msdn.microsoft.com/en-us/library/ms479390.aspx), podría utilizar los siguientes Servicios Web:

    http://<Site>/_vti_bin/Dws.asmx     -->Permite realizar operaciones con bibliotecas documentales
    http://<Site>/_vti_bin/Lists.asmx    -->Permite realizar operaciones con listas
    http://<Site>/_vti_bin/search.asmx  -->Permite realizar búsquedas de documentos
    http://<site>/_vti_bin/Permissions.asmx  -->Permite la asignación de permisos para la ejecución de operaciones en SharePoint

    Entre todos estos Servicios Web que he indicado, ¿hay alguno que permita trabajar directamente con documentos?
    El Servicio Web "Dws" permite trabajar con bibliotecas documentales, pero yo ya tengo creadas esas bibliotecas documentales, simplemente quiero subir, bajar y eliminar documentos de las mismas. Estoy buscando funciones similares a "site.Files.Add(strparentfolders, contents, true);", "spFolder.Files.Delete(strparentfolders)", etc.
    He visto que el Servicio Web "Lists" tiene ciertas funciones que pueden serme útiles como "Lists.AddAttachment" y "Lists.DeleteAttachment", etc. Entiendo que el Servicio Web "Lists" es el que más se aproxima a mis propósitos. ¿Podrías confirmarme este punto?

    Muchas gracias una vez más y un saludo,
    José Miguel

    miércoles, 3 de marzo de 2010 15:05
  • Hola José Miguel,

    para subir documentos a bibliotecas tienes 3 opciones.

    1. Utilizar el servicio web Copy.asmx
    2. Utilizar el servicio web Imaging.asmx (aunque sólo si estás subiendo imágenes)
    3. Haciendo un PUT desde una conexión HTTP.

    Te dejo un enlace que te explica las 3 opciones posibles http://blogs.msdn.com/erikaehrli/archive/2009/06/30/how-to-upload-files-to-sharepoint-server-2007-from-asp-net-web-applications.aspx

    Un saludo,


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    miércoles, 17 de marzo de 2010 22:44
  • Muchas gracias Alberto. Tu respuesta me ha sido de gran ayuda.
    Un saludo,
    jueves, 18 de marzo de 2010 9:36
  • Hola,

    en una forma de un WF que estamos haciendo esta lanzando el mismo error.

    Ese error se corrigio usando el id del sitio en lugar de la url, utilizanso "SPContext.Current.Site.ID"

     

    quedo de la siguiente forma.

    using (SPSite _site = new SPSite(SPContext.Current.Site.ID))

                {

                    using (SPWeb _web = _site.OpenWeb())

    {

    }

    }

     

    espero te sirva.

    Saludos

    Sharop.

    martes, 18 de mayo de 2010 20:28
  • Muchas gracias por tu ayuda Sharop, aunque creo que no se puede aplicar a mi entorno, ya que estamos intentando realizar operaciones contra un servidor de SharePoint remoto a través de los métodos que ofrece la Dll Microsoft.SharePoint.Dll, algo imposible, pues según me han indicado, para esto hay que emplear los Servicios Web que ofrece el propio SharePoint. Entiendo que en vuestro caso el servidor no está en una ubicación remota ¿es así?

    ¡Gracias por tu ayuda, ya que me parece interesante emplear el ID en lugar de la URL!

    miércoles, 19 de mayo de 2010 15:38