Compartir a través de


Procedimiento para publicar métodos RPC de SharePoint Foundation

Última modificación: martes, 23 de marzo de 2010

Hace referencia a: SharePoint Foundation 2010

Puede usar el protocolo de dirección URL junto con el Lenguaje de marcado de aplicaciones de colaboración (CAML) y el protocolo de llamada a procedimiento remoto de SharePoint Foundation para enviar solicitudes a un servidor front-end web que ejecute Microsoft SharePoint Foundation 2010. Use el elemento Method de CAML para enviar una sola solicitud o un elemento Batch que contenga varios elementos Method para enviar varias solicitudes, mediante el cuerpo del envío de un formulario en una página .ASPX. La siguiente tarea de programación muestra cómo crear un formulario para enviar las solicitudes.

Para crear un formulario para enviar las solicitudes

  1. Cree una página .aspx y agregue una directiva de página, como la siguiente, que registra el espacio de nombres de Microsoft.SharePoint.WebControls para el control de servidor.

    <%@ Register Tagprefix="SharePoint" 
      Namespace="Microsoft.SharePoint.WebControls" 
      Assembly="Microsoft.SharePoint, Version=11.0.0.0, 
      Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    

    Nota

    Puede obtener el valor PublicKeyToken para la implementación actual de SharePoint Foundation 2010 desde el archivo default.aspx en la ruta de acceso unidad_local:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\sts o de la información proporcionada para el ensamblado de Microsoft.SharePoint en unidad_local:\%WINDOWS%\assembly en el Explorador de Windows.

  2. Agregue el siguiente bloque de script para insertar el control FormDigest automáticamente en cada elemento Method cuando se envíe el formulario.

    <script type="text/javascript" language="JavaScript">
    function InsertSecurityValidation(oForm)
    {
        var sFormDigest = '<SetVar Name="__REQUESTDIGEST">' + 
          oForm.elements["__REQUESTDIGEST"].value + "</SetVar>\n";
        var oPostBody = oForm.elements["PostBody"];
        var rePattern = /<\/Method>/g;
        oPostBody.value = oPostBody.value.replace(rePattern, 
            sFormDigest + "</Method>");
    }
    </script>
    
  3. Cree un formulario en la página .aspx como el siguiente, donde el atributo action contenga el comando de dirección URL que se envía al servidor.

    <form method="post" 
      action="http://Server_Name/sites/Site_Name/_vti_bin/owssvr.dll" 
      onsubmit="InsertSecurityValidation(this);">
      <SharePoint:FormDigest runat="server" />
      <input type="hidden" name="Cmd" value="DisplayPost" />
      <textarea rows="18" name="PostBody" cols="72"></textarea>
      <input type="submit" value="Submit" />
      <input type="reset" value="Reset" />
    </form>
    

    El formulario usa el método DisplayPost para solicitar que el servidor represente cualquier CAML incluido dentro del cuerpo del envío.

  4. Abra el formulario en el explorador e inserte un bloque de código como el siguiente en el cuerpo del envío, el cual usa el elemento Batch para enviar varios elementos Method de RPC para agregar dos anuncios a una lista de anuncios:

    <ows:Batch Version="6.0.2.5608" OnError="Return">
      <Method ID="A1">
        <SetList>List_GUID</SetList>
        <SetVar Name="ID">New</SetVar>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">
            New Program Manager</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Body">
            Congratulations to Jane for her promotion!</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Expires">
            2001-09-14T00:00:00Z</SetVar>
      </Method>
      <Method ID="A2">
        <SetList>List_GUID</SetList>
        <SetVar Name="ID">New</SetVar>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">
            Sales rise by 10%</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Body">The
            accounting department has released its quarterly report. 
            Check it out!</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Expires">
            2001-12-18T00:00:00Z</SetVar>
      </Method>
    </ows:Batch>
    

Compilación de código

El elemento Batch debe contener un atributo Version que especifique la versión de SharePoint Foundation que se está ejecutando en el servidor. Cada nodo SetList debe especificar el GUID de la lista.

Cuando se envía el formulario, este ejemplo agrega dos registros a una lista de anuncios.

Seguridad

Si la validación de seguridad está habilitada en el servidor, que es true de forma predeterminada en SharePoint Foundation, deberá agregarse un control de servidor FormDigest al formulario. Para obtener información acerca de la validación de este control y seguridad, consulte Validación de seguridad y realización de envíos para actualizar datos. Para cada elemento Method usado en un envío, se debe haber especificado una síntesis de formulario; de lo contrario, el envío no pasará la validación de seguridad.