none
Crear WebService de una lista de Sharepoiint RRS feed

  • Pregunta

  • Buenos días, dispongo de dos páginas desarrolladas en sharepoint y necesito extraer los datos de una lista de una de ella a través de un WebService pero me encuentro con problemas: En ambas páginas es necesario entrar como usuario para poder visualizar el contenido, por lo tanto en el webservice hace falta acceder de algún modo con unas credenciales que permitan realizar una consulta de contenido a la lista y devolver los datos. De momento tengo este código:

    [WebMethod]
            public DataTable Recursos(string Actividad)
            {
                SPSite sitio = new SPSite("http://www.pagina2.es/fichas/");
                SPQuery Consulta = new SPQuery();
                Consulta.Query = "<Where><Eq><FieldRef Name='Actividad' /><Value Type='Text'>" + Actividad + "</Value></Eq></Where>";
                return sitio.OpenWeb().Lists["Recursos"].GetItems(Consulta).GetDataTable();
            }
    

    Al ejecutar el webservice e introducir el parametro 'Actividad' correctamente me salta el siguiente fallo:

    System.IO.FileNotFoundException: No se encontr&#243; la aplicaci&#243;n web en http://www.pagina2.es/fichas/. Compruebe que escribi&#243; la direcci&#243;n URL correctamente. Si la direcci&#243;n URL da servicio al contenido existente, puede que el administrador del sistema necesite agregar una nueva asignaci&#243;n de solicitud de direcci&#243;n URL a la aplicaci&#243;n deseada.
       en Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
       en Microsoft.SharePoint.SPSite..ctor(String requestUrl)
       en ServicioWebInfoten.Service1.Recursos(String Actividad) en C:\Webparts\ServicioWeb\ServicioWeb\Servicio.asmx.cs:línea 24
    

    ¿Alguien podría ayudarme? Muchas gracias

    viernes, 14 de octubre de 2011 10:44

Todas las respuestas

  • Hola

    ¿estás compilando el servicio web en x64? El error parece ese.


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    viernes, 14 de octubre de 2011 11:37
  • Hola Alberto, gracias por tu respuesta. Efectivamente, lo tengo en una carpeta pero fuera del IIS, ¿Lo tengo que meter aqui dentro?¿En alguna carpeta en concreto?.

     

    Gracias

    viernes, 14 de octubre de 2011 11:44
  • No es la carpeta. Entiendo que estás usando el API de servidor de SharePoint, pues debes de asegurarte que tu servicio web se está compilando en x64 y no en x86 o en Any CPU

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    viernes, 14 de octubre de 2011 11:48
  • No bueno, no estoy usando ningun API, es más el Servicio o programa cliente no esta hecho, lo que estoy es ejecutando (modo Debug), seleccionando el método y dándolo un valor correcto a la propiedad del método. Te pongo el código completo del fichero Servicio.asmx

    namespace ServicioWeb
    {
        /// <summary>
        /// Descripción breve de Servicio
        /// </summary>
        [WebService(Namespace = "http://www.pagina2.es/", Name = "SW", Description = "Servicio para obtener datos de una lista.")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
        // [System.Web.Script.Services.ScriptService]
        public class Service1 : System.Web.Services.WebService
        {
            [WebMethod]
            public DataTable Recursos(string Actividad)
            {
                SPSite sitio = new SPSite("http://www.pagina2.es/fichas/");
                SPQuery Consulta = new SPQuery();
                Consulta.Query = "<Where><Eq><FieldRef Name='Actividad' /><Value Type='Text'>" + Actividad + "</Value></Eq></Where>";
                return sitio.OpenWeb().Lists["Recursos"].GetItems(Consulta).GetDataTable();
            }
        }
    }
    


    viernes, 14 de octubre de 2011 11:54
  • Hola VWeb,

    a lo que Alberto se refiere es a que tienes que ir a las propiedades del proyecto de Visual Studio donde tienes el código que estas mostrando, al apartado de compilación y mirar si tienes como plataforma de compilación x64. Si tienes x86 o Any CPU no funcionarà tu código.

    Un saludo,
    David Martos | SharePoint Server MVP | http://david-martos.blogspot.com | @davidmartos

    viernes, 14 de octubre de 2011 16:01
  • Hola David Martos, efectivamente, tiene Any CPU, viene esto por defecto, entonces como puedo cambiarlo o que debo poner para que funcione? sabes de algun manual o algo, he estado buscando pero en Sharepoint 2010 hay muy poca documentación la verdad.

     

    Muchas gracias

    domingo, 16 de octubre de 2011 21:12