【问题标题】:Issue reading lists from Sharepoint listdata.svc from another REST service从另一个 REST 服务的 Sharepoint listdata.svc 发出读取列表
【发布时间】:2015-12-07 17:02:21
【问题描述】:

全部。

我创建了一个 REST ApiController,其中包括尝试调用 Sharepoint 站点的 /_vti_bin/listdata.svc 以获取一个或多个 Sharepoint 列表的内容。

ApiController 的 web.config 使用没有模拟的 Windows 身份验证。在代码中,我使用 System.Net.CredentialCache.DefaultNetworkCredentials 作为 DataContext.Credentials。

当我使用 Visual Studio 在本地运行服务时,ApiController 能够毫无问题地调用 listdata.svc 并且能够检索列表的全部内容。

但是,当我将 ApiController 部署到在系统帐户下运行的实际 IIS 服务器时,对 listdata.svc 的调用不会检索到任何结果。从我在 ApiController 的日志中可以看到,没有抛出异常。根据日志,列表只是显示为空(0 项)。

我已检查以确保 IIS 系统帐户可以正确访问 Sharepoint 站点。

关于行为差异的原因有什么想法吗?

【问题讨论】:

  • 尝试以系统以外的任何帐户运行应用程序池。我不能确定 IIS,但在 Windows 中,系统帐户通常会阻止任何提升以域用户身份运行的操作的尝试。网络服务应该可以正常工作。这可能不是问题,但很容易检查,如果仍然无法正常工作,也许您可​​以分享一点源代码。

标签: c# asp.net rest sharepoint asp.net-web-api


【解决方案1】:

解决了这个问题。考虑到我曾经是 SharePoint 网站管理员这一事实,这个问题有点令人尴尬。

我忘记了,使用 SharePoint 可以同时拥有给定网站的网站和列表权限,它们不会相互继承。

无论出于何种原因,该网站对我尝试访问的列表具有一组不同于该网站的一般权限。

使用的系统帐户具有完全控制的站点权限。但是对于有问题的列表,他们没有权限(但其他帐户,例如我自己的帐户)。这可以解释为什么系统帐户可以连接到站点的列表服务但列表显示为空。

在授予系统帐户对列表的读取权限后,一切正常。

这里的教训是:如果管理员决定单独授予列表权限,仅仅因为帐户具有站点权限并不意味着它适用于站点中的所有列表。

希望以上所有内容都有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多