【问题标题】:Handling credentials when accessing SharePoint data from .Net application从 .Net 应用程序访问 SharePoint 数据时处理凭据
【发布时间】:2018-07-17 23:19:56
【问题描述】:

我正在尝试从 .Net (C#) Web 应用程序访问一些 SharePoint 列表。我用谷歌搜索了这个主题,似乎共识是使用 WCF 数据服务(下面列出的步骤)。获取数据后,我将其显示在 jQuery 数据表中,使用 Ajax Web 服务调用来获取数据。

第一步是运行 DataSvcUtil.exe 来创建一个 DataService.cs 文件,其中包含从 .NET Framework 客户端应用程序访问数据服务所需的客户端数据服务类。然后添加了对 Microsoft.Data.OData.dll 和 Microsoft.Data.Services.Client.dll 的引用。

我创建了一个 Web 服务 API(如下)。在本地运行,从 VS 2017 或从应用程序服务器上的 IIS,我得到所有数据,尽管在 80 秒内(对于 16,000 条记录来说太长了)。但是,当我从浏览器运行此程序时,我收到状态码 500 错误,发现这是由于凭据问题。

我将凭据设置为 CredentialCache.DefaultCrdentilas(后来更改为 DefaultNetworkCredentials),但必须使用 NetworkCrdentials(UserID, pwd, domain)。

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]

public string GetCompletedAssessments()
{
    SPService_DataContext dc = new SPService_DataContext(new Uri("http://my_sp_site_.com/sites/nvx/SPService/_vti_bin/listdata.svc/"));
    dc.Credentials = System.Net.CredentialCache.DefaultCredentials;

    // Had to change the above to this to get it to work
    dc.Credentials = new System.Net.NetworkCredential(MyUserID, MyPassword, DomainName);

    var source = dc.CompletedAssessments;
    string JSONresult = JsonConvert.SerializeObject(source);
    return JSONresult;
}

但是,我只是使用我的凭据进行测试,这是不可行的。使用我正在使用的访问数据的方法我可以做些什么,或者我应该使用其他不需要提供凭据的数据访问方法吗?

应用程序位于与服务器 SharePoint 所在域相同但位置不同的服务器上。

【问题讨论】:

    标签: c# asp.net .net sharepoint wcf-data-services


    【解决方案1】:

    如果您希望应用程序读取数据,则必须提供凭据。

    您可以尝试使用 REST 或 JSOM 从客户端获取数据。这样就使用了用户凭据,结果将被安全修整。

    REST 示例:http://my_sp_site_.com/sites/nvx/SPService/_api/web/lists/GetByTitle('Pages')/items

    如果您使用application/json;odata=verbose 添加Accept 标头,则结果为JSON。否则它在 XML 中。

    SharePoint REST 文档:https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-lists-and-list-items-with-rest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      相关资源
      最近更新 更多