2009-08-20 3 views
4

Ich versuche, den Inhalt der "User Information List" zu bekommen. Diese Liste kann nur als Administrator bearbeitet werden. Ich habe eine Methode, die sich als Admin-Benutzer anmeldet und dann geschieht Folgendes:Sharepoint Zugriff auf "User Information List" über einen Webservice

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

Meine Liste Name korrekt ist und so ist die GUID ich über 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 Htat von unten bekam bin folgende Fehlermeldung:

<?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> 

Wissen Sie, warum ich diesen Fehler bekomme?

aktualisieren

Die Linie

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

eine Ausnahme in der C# -Code Wirft. Die Ausnahme ausgelöst wird, ist:

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

Nicht viel Hilfe ...

Update 2

Ich fand diese im Web http://www.aidangarnish.net/blog/post/2008/04/Retrieving-items-from-a-MOSS-2007-list-using-web-services.aspx und änderte meinen Code:

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

Ich bekomme jetzt Ergebnisse! Immer noch nicht sicher, was ist falsch mit meiner ersten Abfrage, so dass die Frage steht ...

+0

Sie SPServices verwenden. – trgraglia

Antwort

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

Scheint gut von Versuch und Irrtum zu funktionieren.

1

Ich bin mir nicht sicher, dass dies Ihre Frage beantworten wird, aber ich hatte viel mehr Glück, einschließlich nicht als eingeloggt sein müssen ein Administrator, wenn Sie Zugriff auf die Benutzerinformationen Tabelle mit:

  • "Userinfo"

Statt:

  • "Benutzerinformationen Liste"

Die in der Dokumentation aufgeführt hier: http://msdn.microsoft.com/en-us/library/lists.lists.getlist.aspx

Listenname Eine Zeichenfolge, die entweder den Titel oder die GUID der Liste enthält. Bei der Abfrage der UserInfo-Tabelle enthält die Zeichenfolge "UserInfo".

Vielleicht geben Sie das eine Chance.

+0

Das bekomme ich die Liste listService.GetList ("UserInfo"); aber ich brauche die Artikel darin ... – Rupert

+0

Sicher, aber benutze die gleiche Technik in deinem Code oben, um die Gegenstände zu bekommen. –

+0

Gleicher Fehler wie oben ... – Rupert

3

Wenn Sie erneut auf das Problem "Die angegebene Datei wurde nicht gefunden (Ausnahme von HRESULT: 0x80070002)" stoßen, versuchen Sie einfach, den letzten Parameter "webId" auf null zu setzen.

Blick auf Spezifikation des Web-Service von Microsoft zu sagen:

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.

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