我正在动态构建CAML字符串,然后通过JavaScript向SharePoint Web服务发送请求,以从列表中检索一些(或许多)行。
当查询lists.asmx时,我可以构建巨大的CAML查询(1000 + OR嵌套)并且它工作正常但是当查询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>
答案 0 :(得分:1)
不确定问题是什么,但与dspsts.asmx有关的任何事情的明显答案都是obsolete。这个Web服务大约在10年前在Sharepoint 2.0中引入,并且在SP 2007中使用lists.asmx解决了很多限制。无论问题或问题是什么,都不会得到解决。
在SharePoint 2010中,最好尽可能使用REST interface或各种client libraries(对于.NET,Silverlight,Javascript)。这些查询和更新比使用Web服务容易得多。您甚至可以在.NET客户端中使用LINQ查询或在Javascript中使用类似的函数来使编码更容易。
此外,使用1000个巢是远远不够的。我怀疑你正在尝试执行类似于SQL运算符IN(a,b,c ,,,)的东西。在SharePoint 2010中,您可以使用运算符来完成此操作。