views:

2726

answers:

2

I am trying to get the contents of "User Information List". This list can only be acessed as an admin user. I have a method that logs in as the admin user and then does the following:

var xmlDoc = new XmlDocument();
var query = xmlDoc.CreateElement("Query");
query.InnerXml = "<Where><Eq><FieldRef Name='ContentType' /><Value Type='Choice'>Person</Value></Eq></Where>";
XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
viewFields.InnerXml = "<FieldRef Name='Title' />";
XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
var items = ws.GetListItems("User Information List", "", query, viewFields, string.Empty, queryOptions, "8A391AE3-2783-489B-8BDF-D2AE971D73CD");

My list Name is Correct and so is the GUID I got htat from below via SharePoint Explorer

<List DocTemplateUrl="" DefaultViewUrl="/_catalogs/users/detail.aspx" MobileDefaultViewUrl="" ID="{8A391AE3-2783-489B-8BDF-D2AE971D73CD}" Title="User Information List" Description="All people." ImageUrl="/_layouts/images/users.gif" Name="{8A391AE3-2783-489B-8BDF-D2AE971D73CD}" BaseType="0" FeatureId="" ServerTemplate="112" Created="20080430 02:48:38" Modified="20090819 08:31:52" LastDeleted="20090604 12:32:50" Version="141" Direction="none" ThumbnailSize="" WebImageWidth="" WebImageHeight="" Flags="41971988" ItemCount="46" AnonymousPermMask="0" RootFolder="/_catalogs/users" ReadSecurity="1" WriteSecurity="1" Author="1" EventSinkAssembly="" EventSinkClass="" EventSinkData="" EmailInsertsFolder="" EmailAlias="" WebFullUrl="/" WebId="767c0b20-058d-4b53-8362-81e005bf5098" SendToLocation="" ScopeId="64857900-37cf-431c-be07-5528d1ae46af" MajorVersionLimit="0" MajorWithMinorVersionsLimit="0" WorkFlowId="" HasUniqueScopes="False" AllowDeletion="False" AllowMultiResponses="False" EnableAttachments="True" EnableModeration="False" EnableVersioning="False" Hidden="True" MultipleDataList="False" Ordered="False" ShowUser="True" EnableMinorVersion="False" RequireCheckout="False" />

I am being returned the following error:

<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
        <soap:Body>
            <soap:Fault>
                <faultcode>soap:Server</faultcode>
                <faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring>
                <detail>
                    <errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/"&gt;The system cannot find the file specified. (Exception from HRESULT: 0x80070002)</errorstring>
                </detail>
            </soap:Fault>
        </soap:Body>
    </soap:Envelope>

Do you know why I am getting this error?

Update

The line

var items = ws.GetListItems("User Information List", "", query, viewFields, string.

Is throwing an exception in the C# code. The exception being thrown is:

Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.

Not a lot of help...

Update 2

I found this on the web http://www.aidangarnish.net/blog/post/2008/04/Retrieving-items-from-a-MOSS-2007-list-using-web-services.aspx and changed my code to:

var node = ws.GetListItems("User Information List", String.Empty, null, null, String.Empty, null, null);

I am now getting results! Still not sure what is wrong with my initial query so the question stands...

A: 

I'm not sure this will answer your question, but, I have had a lot more luck, including not having to be logged on as an administrator, if you access the User Information Table using:

  • "UserInfo"

Instead of:

  • "User Information List"

Its listed in the documentation here: http://msdn.microsoft.com/en-us/library/lists.lists.getlist.aspx

listName A string that contains either the title or the GUID for the list. When querying the UserInfo table, the string contains "UserInfo".

Perhaps give that a shot.

Daniel McPherson
This get's me the list listService.GetList("UserInfo"); but I need the items in it...
Rupert
Sure, but use the same technique in your code above to get the items.
Daniel McPherson
Same error as above...
Rupert
A: 
var node = ws.GetListItems("User Information List", String.Empty, null, null, String.Empty, null, null);

Seems to work fine from trial and error.

Rupert