SharePoint 2010 列表 Web 服务 UpdateList 失败并显示“尝试使用已不复存在的对象”...但它确实存在。
我想更新现有字段的属性。出于演示目的,更新描述应该很容易。使用和扩展 haufe.sharepoint 0.1.9,我能够查询/更新项目和删除字段。我有信心在更新和删除期间观察到更改的列表正确地解决了问题。我相信该字段也得到了准确的处理,因为 a) 它可以被删除,并且 b) 如果我更改“名称”或“ID”,错误将变为“未找到具有该名称的字段”。
从 SUDS 转储 SOAP 消息,我可以显示不同的消息和结果。三个测试用例如下所示。首先是失败。第二个显示不匹配的名称会导致不同的错误。第三个显示如何按名称删除字段。
关于下一步去哪里的任何想法?除了能够删除同一字段之外,是否还有更新字段的特殊权限?虽然我是子网站所有者,但我不是 SharePoint 管理员或服务器管理员。因此,查看日志或安装自定义代码是困难的。这就是我使用 Python Web 服务方法的原因。我几乎完全被难住了。
谢谢,罗伯
消息:这应该可以更新“描述”字段,但不能。除了使用字段 ID 之外,我还尝试了 Name、DisplayName 和 StaticName,但均无济于事。MSFT 参考是:http: //msdn.microsoft.com/en-us/library/lists.lists.updatelist%28v=office.12%29.aspx
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:UpdateList>
<ns1:listName>D538A29D-6DD4-423A-9E7D-2697917BDA78</ns1:listName>
<ns1:updateFields>
<Fields>
<Method ID="1">
<Field ID="08d8fb05-0de8-4e19-988c-e204ade07f47" Description="new desc"/>
</Method>
</Fields>
</ns1:updateFields>
</ns1:UpdateList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
故障是:
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring>
<detail>
<errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">Attempted to use an object that has ceased to exist. (Exception from HRESULT: 0x80030102 (STG_E_REVERTED))</errorstring>
<errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x80030102</errorcode>
</detail>
</soap:Fault>
消息:期望找不到该字段并且没有。基本上,这证明了不正确的名称会导致不同的错误。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:UpdateList>
<ns1:listName>D538A29D-6DD4-423A-9E7D-2697917BDA78</ns1:listName>
<ns1:updateFields>
<Fields>
<Method ID="1">
<Field ID="q08d8fb05-0de8-4e19-988c-e204ade07f47" Description="new desc"/>
</Method>
</Fields>
</ns1:updateFields>
</ns1:UpdateList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
消息:能够像这样删除字段。这只是证明可以以某种方式成功地操纵该领域。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:UpdateList>
<ns1:listName>D538A29D-6DD4-423A-9E7D-2697917BDA78</ns1:listName>
<ns1:deleteFields>
<Fields>
<Method ID="3">
<Field Name="myText"/>
</Method>
</Fields>
</ns1:deleteFields>
</ns1:UpdateList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>