Ограничение CAML для SharePoint dspsts.asmx против lists.asmx - PullRequest
0 голосов
/ 07 февраля 2012

Я динамически создаю строку CAML, а затем отправляю запрос веб-службам SharePoint через JavaScript, чтобы извлечь некоторые (или множество) строк из списка.

При запросе lists.asmx я могу создавать огромные CAML-запросы (1000+ ИЛИ вложений), и он работает нормально, но при запросе к dspsts.asmx я могу собрать только до 25. Еще больше, и я получаю ошибку:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Client.Dsp.Syntax</faultcode>
      <faultstring>Query syntax error near 'Where'.</faultstring>
      <detail>
        <queryResponse xmlns="http://schemas.microsoft.com/sharepoint/dsp">
          <dsQueryResponse status="failure" />
        </queryResponse>
      </detail>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>

1 Ответ

1 голос
/ 07 февраля 2012

Не уверен, что вопрос, но очевидный ответ на все, что связано с dspsts.asmx, состоит в том, что он устарел .Этот веб-сервис был представлен в Sharepoint 2.0 почти 10 лет назад и имеет множество ограничений, которые были устранены в SP 2007 с lists.asmx.Неважно, в чем вопрос или проблема, проблема не будет решена.

В SharePoint 2010 предпочтительнее использовать REST-интерфейс или различные клиентские библиотеки (для .NET, Silverlight, Javascript) везде, где это возможно.Эти запросы и обновления намного проще, чем с помощью веб-сервисов.Вы даже можете использовать запросы LINQ в клиентах .NET или аналогичные функции в Javascript, чтобы упростить кодирование.

Кроме того, использование 1000 гнезд - это слишком много.Я подозреваю, что вы пытаетесь выполнить что-то похожее на оператор SQL IN (a, b, c ,,,).В SharePoint 2010 вы можете использовать оператор , чтобы сделать именно это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...