Azra
Azra

Reputation: 123

SharePoint SoapServerException calling GetListItems web service

I have the following statement in my code:

System.Xml.XmlNode items = lstWebs.GetListItems(
    "Tasks", string.Empty, listQuery, listViewFields,
    string.Empty, listQueryOptions, WorkspaceId);

When executing this, the following exception occurs:

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

I have confirmed the site URL and it is fine.

Could you please help on why the exception is occurring? Do I need to reset IIS?

please find the detail.

SoapException.InnerException is Null. 
However the soapExcetion.Detail.InnerText is showing: The system cannot find the file specified. (Exception from HRESULT: 0x80070002) 

Upvotes: 4

Views: 26350

Answers (3)

Chris Voon
Chris Voon

Reputation: 1999

The signature for GetListItems is

GetListItems(ListID, "", queryNode, viewFieldsNode, Nothing, queryOptionsNode, Nothing)

Try simplifying queryNode, viewFieldsNode and queryOptionsNode to the minimal.

In 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>"

In 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>";

If it works, then the web service setup is correct.

When I had the mentioned problem, it was my invalid XML that caused it. There is a missing 'type' attribute on the 'Value' element of the 'Where' element in queryNode. I found it here from Microsoft.

Type | Required Text. Specifies the data type for the value contained by this element.

It works after adding the Type attribute. Check if any missing requirements for the xml in one of the nodes mentioned above?

Upvotes: 3

UJ.
UJ.

Reputation: 149

Have you tried running with elevated permissions, it looks like the running user does not hav sufficient privileges to query the data...

SPSecurity.RunWithElevatedPrivileges

Upvotes: -1

Colin
Colin

Reputation: 10638

Is the name tasks also the actual listname in the url? i.e. http://siteurl/lists/tasks? is the list in a subsite and are you using the service under the site-collection?

IF the list is in a subsite the use http://sitecollectionurl/subsite/_vti_bin/lists.asmx as the Service url, otherwise the lists.asmx will try to find the tasks list in the rootweb instead of the subsite.

Upvotes: 3

Related Questions