Sharepoint получает доступ к «Списку информации о пользователях» через веб-сервис - PullRequest
4 голосов
/ 20 августа 2009

Я пытаюсь получить содержимое «Списка информации о пользователях». Этот список может быть доступен только как администратор. У меня есть метод, который входит в систему как администратор, а затем выполняет следующие действия:

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

Мой список Имя верное, как и GUID, который я получил htat снизу через 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" />

Мне возвращается следующая ошибка:

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

Знаете ли вы, почему я получаю эту ошибку?

Обновление

Линия

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

Выдает исключение в коде C #. Выдается исключение:

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

Не так много помощи ...

Обновление 2

Я нашел это в Интернете http://www.aidangarnish.net/blog/post/2008/04/Retrieving-items-from-a-MOSS-2007-list-using-web-services.aspx и изменил свой код на:

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

Теперь я получаю результаты! Все еще не уверен, что не так с моим первоначальным запросом, поэтому вопрос стоит ...

Ответы [ 3 ]

3 голосов
/ 14 марта 2012

Если вы столкнулись с проблемой «Система не может найти указанный файл. (Исключение из HRESULT: 0x80070002)» снова, просто попробуйте установить для последнего параметра «webId» значение null.

Посмотрите на спецификацию веб-службы Microsoft, сказав:

webID: необязательно. Строка, содержащая GUID родительского веб-сайта для списка, окруженного фигурными скобками ({}). Установка этого параметра к нулю означает веб-сайт, указанный в свойстве URL служба будет использоваться, и если свойство URL службы не указан, корневой веб-сайт будет использоваться.

Источник: http://msdn.microsoft.com/en-us/library/lists.lists.getlistitems(v=office.12).aspx

1 голос
/ 24 августа 2009
var node = ws.GetListItems("User Information List", String.Empty, null, null, String.Empty, null, null);

Кажется, отлично работает методом проб и ошибок.

1 голос
/ 20 августа 2009

Я не уверен, что это ответит на ваш вопрос, но мне повезло гораздо больше, включая то, что вам не нужно было входить в систему как администратор, если вы заходите в Таблицу информации о пользователе с помощью:

  • "UserInfo"

Вместо:

  • «Список информации о пользователях»

Это указано в документации здесь: http://msdn.microsoft.com/en-us/library/lists.lists.getlist.aspx

ИМЯ_СПИСОК Строка, которая содержит заголовок или идентификатор GUID для списка. При запросе таблицы UserInfo строка содержит «UserInfo».

Возможно, сделайте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...