SharePoint列表Web服务中的UpdateListItems方法因Soap Server异常而失败

时间:2013-08-18 05:44:35

标签: visual-studio-2010 web-services sharepoint

我正在从未安装SharePoint的客户端计算机上开发MS Office 2010 Excel AddIn。我从远程SharePoint服务器导入了列表Web服务引用。我开发了一个wpf用户控件,可以从列表中加载数据并在excel工作表中显示它。它完美地运作。然后我扩展我的客户端应用程序以更新服务器中的列表项。所以我尝试使用Web服务引用使用UpdateListItems方法更新服务器中的列表项。

但它因“Soap Server Exception”异常而失败。我无法弄清楚这里有什么问题,因为我可以毫无问题地导入数据。以下是我的代码块。

SPListsWS.Lists myListUpdateProxy = new SPListsWS.Lists();
        myListUpdateProxy.Credentials = CredentialCache.DefaultCredentials;
        myListUpdateProxy.Url = "http://uvo1y1focm66gonf7gw.env.cloudshare.com/_vti_bin/Lists.asmx";

        XmlNode listView = myListUpdateProxy.GetListAndView("Products", "");

        string listID = listView.ChildNodes[0].Attributes["Name"].Value;
        string viewID = listView.ChildNodes[1].Attributes["Name"].Value;

        XmlDocument Xdoc = new XmlDocument();
        XmlElement updateElement = Xdoc.CreateElement("updateElement");
        updateElement.SetAttribute("OnError", "Continue");
        updateElement.SetAttribute("ListVersion", "1");
        updateElement.SetAttribute("ViewName", viewID);

        updateElement.InnerXml = "<Method ID='1' Cmd='Update'>"
                                  + "<Field Name = 'ID'>" + index + "</Field>"
                                  + "<Field Name = 'Title'>" + prodTitle + "</Field>"
                                  + "<Field Name = 'Product_SKU'>" + prodSKU + "</Field>"
                                  + "<Field Name = 'Product_Price'>" + prodPrice + "</Field>"
                                  + "</Method>";

        XmlNode responseXml = myListUpdateProxy.UpdateListItems("Products", updateElement);
        MessageBox.Show(responseXml.OuterXml);

1 个答案:

答案 0 :(得分:1)

要更新项目,您应使用UpdateListItems代替GetListItems。此外,使用UpdateListItems时,请将<Metdod>标记包含在<Batch>个元素中。这将取代您的updateElement。看看是否有效,如果没有,请包含实际错误消息的responseText以及您正在使用的SharePoint版本。