【发布时间】: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