Sharepoint accessing "User Information List" via a webservice

14,851

Solution 1

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

Seems to work fine from trial and error.

Solution 2

If you encountered the problem "The system cannot find the file specified. (Exception from HRESULT: 0x80070002)" again, just try to set the last parameter "webId" to null.

Look at specification of the web service by Microsoft saying:

webID: Optional. A string containing the GUID of the parent Web site for the list surrounded by curly braces ({}). Setting this parameter to null means the Web site specified by the URL property of the service will be used, and if the URL property of the service is not specified, the root Web site will be used.

Source: http://msdn.microsoft.com/en-us/library/lists.lists.getlistitems(v=office.12).aspx

Solution 3

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.

Share:
14,851
Rupert
Author by

Rupert

Updated on June 04, 2022

Comments

  • Rupert
    Rupert almost 2 years

    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">
            <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/">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...

  • Rupert
    Rupert over 14 years
    This get's me the list listService.GetList("UserInfo"); but I need the items in it...
  • Daniel McPherson
    Daniel McPherson over 14 years
    Sure, but use the same technique in your code above to get the items.