我的代码中有以下声明:
System.Xml.XmlNode items = lstWebs.GetListItems(
"Tasks", string.Empty, listQuery, listViewFields,
string.Empty, listQueryOptions, WorkspaceId);
执行此操作时,会发生以下异常:
Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown. Exception Source is: System.Web.Services Stack Trace: at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at ImpersonationConsoleApp.MossLists.Lists.GetListItems(String listName, String viewName, XmlNode query, XmlNode viewFields, String rowLimit, XmlNode queryOptions, String webID) in C:\Documents and Settings\david\My Documents\_Dew02SiteCreator\DeWProjectStarter\ImpersonationConsoleApp\Web References\MossLists\Reference.cs:line 435 at ImpersonationConsoleApp.Program.DeleteTasksIfNotExist(DataRow[] drTasksdel, String siteURL) in C:\Documents and Settings\david\My Documents\_Dew02SiteCreator\DeWProjectStarter\ImpersonationConsoleApp\Program.cs:line 1384
我已确认网站网址,很好。
请您帮忙解释为什么会发生异常?我需要重置IIS吗?
请查看详细信息。
SoapException.InnerException is Null.
However the soapExcetion.Detail.InnerText is showing: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
答案 0 :(得分:3)
名称任务是否也是网址中的实际列表名称?即http://siteurl/lists/tasks?是子网站中的列表,您是否在网站集下使用该服务?
如果列表位于子网站中,则使用http://sitecollectionurl/subsite/_vti_bin/lists.asmx作为服务URL,否则lists.asmx将尝试在rootweb而不是子网站中查找任务列表。
答案 1 :(得分:3)
GetListItems的签名是
GetListItems(ListID,"",queryNode,viewFieldsNode,Nothing,queryOptionsNode,Nothing)
尝试将queryNode,viewFieldsNode和queryOptionsNode简化为minimal。
在VB.NET中
Dim caml = New XmlDocument
Dim queryNode = caml.CreateElement("Query")
Dim viewFieldsNode = caml.CreateElement("ViewFields")
Dim queryOptionsNode = caml.CreateElement("QueryOptions")
queryOptionsNode.InnerXml = "<ViewAttributes Scope=""Recursive"" /><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>"
在C#中
var caml = new XmlDocument();
var queryNode = caml.CreateElement("Query");
var viewFieldsNode = caml.CreateElement("ViewFields");
var queryOptionsNode = caml.CreateElement("QueryOptions");
queryOptionsNode.InnerXml = "<ViewAttributes Scope=\"Recursive\" /><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>";
如果有效,则Web服务设置正确。
当我遇到上述问题时,导致它的是我的无效XML。缺少&#39;类型&#39;关于&#39; Value&#39;的属性&#39; Where&#39;的元素queryNode中的元素。我在Microsoft找到了它。
输入|必填文字。指定此元素包含的值的数据类型。
添加Type属性后,它可以正常工作。检查上面提到的其中一个节点中xml是否缺少任何要求?
答案 2 :(得分:-1)
您是否尝试使用提升的权限运行,看起来正在运行的用户没有足够的权限来查询数据...
SPSecurity.RunWithElevatedPrivileges