4
votes

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) 
3
Could you check out the SoapException's InnerException and the SoapException.Detail property and then post that here?Colin
Could you write some more information about the parameters as the value of "listQuery"? What type of application are you implementing?jaloplo

3 Answers

3
votes

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.

3
votes

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?

-1
votes

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

SPSecurity.RunWithElevatedPrivileges