Поделиться через


Отправка методов RPC SharePoint Foundation

Дата последнего изменения: 23 марта 2010 г.

Применимо к: SharePoint Foundation 2010

URL-протокол можно использовать в сочетании с языком Collaborative Application Markup Language (CAML) и протоколом RPC SharePoint Foundation для запросов к интерфейсному веб-серверу, в котором выполняется Microsoft SharePoint Foundation 2010. Следует использовать элемент CAML Method для представления одного запроса или элемент Batch, содержащий несколько элементов Method, для представления нескольких запросов с использованием тела представления формы на странице ASPX. В следующей программной задаче показан метод создания формы для представления запросов.

Создание формы для представления запросов

  1. Создайте страницу ASPX и добавьте директиву страницы, например, следующую, которая регистрирует пространство имен Microsoft.SharePoint.WebControls для элемента управления сервера.

    <%@ Register Tagprefix="SharePoint" 
      Namespace="Microsoft.SharePoint.WebControls" 
      Assembly="Microsoft.SharePoint, Version=11.0.0.0, 
      Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    
    ПримечаниеПримечание

    Можно получить значение PublicKeyToken для текущего развертывания SharePoint Foundation 2010 на основании файла default.aspx, путь: диск_локального_компьютера:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\sts, или на основании сведений, предоставляемых для сборки Microsoft.SharePoint, путь: диск_локального_компьютера:\%WINDOWS%\assembly в проводнике Windows.

  2. Добавьте следующий блок скриптов для автоматической вставки элемента управления FormDigest в каждый элемент Method, когда отправляется форма.

    <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. Создайте форму на странице ASPX, например, такую как следующая, в которой атрибут action содержит URL-команду, которая представляется серверу.

    <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>
    

    Форма использует метод DisplayPost для запроса, по которому сервер обрабатывает CAML, который содержится в теле представления.

  4. Откройте форму в браузере и вставьте блок кода, такой как следующий, в тело представления, которое использует элемент Batch для представления нескольких методов RPC для добавления двух извещений в список извещений.

    <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>
    

Компилирование программы

Элемент Batch должен содержать атрибут Version, который определяет версию SharePoint Foundation, которая выполняется на сервере. Каждый узел SetList должен задавать GUID списка.

При отправлении формы в этом образце кода добавляются две записи в список извещений.

Безопасность

Если на сервере включена проверка безопасности, для которой по умолчанию установлено true в SharePoint Foundation, элемент управления FormDigest сервера должен быть добавлен в форму. Сведения об этом элементе управления и о проверке безопасности см. в разделе Проверка безопасности и отправка данных для обновления. Каждый используемый в представлении элемент Method должен иметь заданный дайджест формы; в противном случае представление не пройдет проверки безопасности.