【问题标题】:Sharepoint accessing "User Information List" via a webserviceSharepoint 通过网络服务访问“用户信息列表”
【发布时间】:2010-11-21 06:39:20
【问题描述】:

我正在尝试获取“用户信息列表”的内容。此列表只能作为管理员用户访问。我有一个以管理员用户身份登录的方法,然后执行以下操作:

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

我的列表名称是正确的,我通过 SharePoint Explorer 从下面获得 htat 的 GUID 也是正确的

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

我现在得到了结果!仍然不确定我的初始查询有什么问题,所以问题仍然存在......

【问题讨论】:

    标签: c# sharepoint sharepoint-2007 moss


    【解决方案1】:

    如果你再次遇到“系统找不到指定的文件。(HRESULT异常:0x80070002)”的问题,只需尝试将最后一个参数“webId”设置为null。

    看看微软的网络服务规范说:

    webID:可选。包含父网站的 GUID 的字符串 对于用大括号 ({}) 包围的列表。设置此参数 为 null 表示由 URL 属性指定的网站 服务将被使用,如果服务的 URL 属性不是 指定时,将使用根网站。

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

    【讨论】:

      【解决方案2】:

      我不确定这是否会回答您的问题,但是,如果您使用以下方式访问用户信息表,我的运气要好得多,包括不必以管理员身份登录:

      • “用户信息”

      代替:

      • “用户信息列表”

      它在此处的文档中列出: http://msdn.microsoft.com/en-us/library/lists.lists.getlist.aspx

      列表名称 包含列表标题或 GUID 的字符串。查询UserInfo表时,字符串中包含“UserInfo”。

      或许可以试一试。

      【讨论】:

      • 这是我的列表 listService.GetList("UserInfo");但我需要里面的物品...
      • 当然,但是在上面的代码中使用相同的技术来获取项目。
      【解决方案3】:
      var node = ws.GetListItems("User Information List", String.Empty, null, null, String.Empty, null, null);
      

      经过反复试验似乎可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-16
        • 2021-08-10
        • 1970-01-01
        • 2016-04-01
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多