我很难实现Web服务客户端。我正在使用Web引用查询SharePoint 2010 Web服务。下面的代码在try块内的行上引发异常。Web服务抛出异常
SoapService.Lists service = new SoapService.Lists();
service.Credentials = CredentialCache.DefaultCredentials;
XmlDocument doc = new XmlDocument();
XmlNode query = doc.CreateNode(XmlNodeType.Element,"Query","");
XmlNode viewFields = doc.CreateNode(XmlNodeType.Element,"ViewFields","");
XmlNode queryOptions = doc.CreateNode(XmlNodeType.Element,"QueryOptions","");
query.InnerXml = @"<Where><IsNotNull><FieldRef Name='Vendor Name'/></IsNotNull></Where>";
viewFields.InnerXml = @"<FieldRef Name='Vendor Name'/>";
queryOptions.InnerXml = @"<QueryOptions/>";
try
{
XmlNode response = service.GetListItems("DLA-Suppliers", null, query, viewFields, null, queryOptions, null); // exception thrown
}
catch (System.Web.Services.Protocols.SoapException e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.Detail);
Console.WriteLine(e.StackTrace);
}
这里是例外(SoapServerException)堆栈跟踪:
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 DLAUpdateSP.SoapService.Lists.GetListItems(String listName, String viewName, XmlNode query, XmlNode viewFields, String rowLimit, XmlNode queryOptions, String webID) in c:\users\user\documents\visual studio 2010\Projects\DLAUpdateSP\Web References\SoapService\Reference.cs:line 455
at DLAUpdateSP.Program.UpdateSuppliers(String fileLocation) in C:\Users\user\Documents\Visual Studio 2010\Projects\DLAUpdateSP\Program.cs:line 58
有没有人有任何想法?除了堆栈跟踪之外,异常的属性几乎全部为空。我从来没有做过SOAP,所以这对我来说真的很新鲜。任何帮助真的很感激。
我没有创建Web服务,这是SharePoint Web服务API的一部分。我不相信传入空值是一个问题,因为它是在MSDN文档中完成的:http://msdn.microsoft.com/en-us/library/lists.lists.getlistitems(v=office.12) .aspx – Nathan
啊,我看到了...我很惊讶MS建议手动操纵XML字符串来访问一个服务......它太不雅观了。也就是说,我不知道你的代码发生了什么......我唯一的其他建议是,如果可以的话,可能检查SharePoint服务器上的日志。 – derekmckinnon
不幸的是我没有直接访问SharePoint服务器。如果我这样做,我不会使用Web服务。谢谢您的帮助。 – Nathan