gpt4 book ai didi

asp.net - 远程服务器返回错误: (401) Unauthorized.在ASP.NET中使用CSOM

转载 作者:行者123 更新时间:2023-12-04 06:03:00 26 4
gpt4 key购买 nike

我尝试提取一些我创建的SharePoint 2013列表数据,这些数据在计算机上本地运行以及在一台服务器上本地运行时运行良好。在服务器上本地和本地运行时,我使用相同的凭据。问题是,当我在服务器上发布并导航到我的ASP.NET应用程序时,出现“远程服务器返回错误:(401)未经授权”。错误...

我看了很多关于stackoverflow的帖子以及网络上的其他一些文章

这指出上下文似乎正在使用IUSR:
http://blogs.msdn.com/b/sridhara/archive/2014/02/06/sharepoint-2013-csom-call-from-web-part-fails-with-401-for-all-users.aspx

该文章提到尝试设置默认的网络凭据:
https://sharepoint.stackexchange.com/questions/10364/http-401-unauthorized-using-the-managed-client-object-model

我尝试使用本文中提到的修复程序,并试图强制上下文使用DefaultNetworkCredentials,但是没有运气。我希望应用程序使用登录用户的凭据而不是计算机...

这是我正在使用的代码:

        SP.ClientContext context = new SP.ClientContext("MySPDevInstance");
context.Credentials = CredentialCache.DefaultNetworkCredentials;

Entity entity = context.Web.GetEntity(collectionNamespace, collectionName);
LobSystem lobSystem = entity.GetLobSystem();
LobSystemInstanceCollection lobSystemInstanceCollection = lobSystem.GetLobSystemInstances();

context.Load(lobSystemInstanceCollection);
context.ExecuteQuery();

LobSystemInstance lobSystemInstance = lobSystemInstanceCollection[0];
FilterCollection filterCollection = entity.GetFilters(filter);

filterCollection.SetFilterValue("LimitFilter", 0, 1000);

EntityInstanceCollection items = entity.FindFiltered(filterCollection, filter, lobSystemInstance);

服务器正在运行IIS 6.0

任何建议将不胜感激!

谢谢

最佳答案

我假设您的ASP.NET网站正在使用Windows集成(NTLM)身份验证。通过这种方式进行身份验证的用户无法从服务器端(Web服务器)向第二个位置进行身份验证。您正在经历NTLM的“双跳”(1)限制。您必须在服务器端使用专用帐户,或者如果您确实要使用登录用户的身份,则必须使用允许委派的身份验证方案,例如Kerberos。

如果您确实需要用户身份来访问SharePoint数据,并且不能更改身份验证方案,那么最好的方法是使用JavaScript CSOM。这意味着用户正在直接向SharePoint服务器进行身份验证(单跳,而不是两次),并且您的ASP.NET网站将包含该脚本的页面提供给用户。

(1)http://blogs.msdn.com/b/knowledgecast/archive/2007/01/31/the-double-hop-problem.aspx

关于asp.net - 远程服务器返回错误: (401) Unauthorized.在ASP.NET中使用CSOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com