2012-08-22 78 views
1

我有一个正在ASP.NET开发服务器上测试的ASP.NET应用程序。该应用程序旨在从Intranet SharePoint站点下载文件。为此我使用了WebClient.DownloadFile()。但我得到与我登录到Windows在运行应用程序可以访问,我想下载该资源的以下exception-授予ASP.NET访问权限以从Sharepoint网站下载文件

"The remote server returned an error: (401) Unauthorized."

帐户。

我试着在IIS 7.5上运行应用程序,为应用程序池提供所需的标识以下载文件。但仍然有同样的错误。

任何想法究竟是什么问题以及如何克服它?提前致谢!

回答

1

问题得到了通过设置UseDefaultCredentials Web客户端的属性为true

1

假设在SharePoint站点上正常的Windows(NTLM)身份验证。

你最喜欢的设计行为是“双跳委派”有时被称为“一跳NTLM地狱” - 从客户端(浏览器)传递到服务器(您的ASP.Net应用程序)的凭据不能用于框。因此,您的ASP.Net应用程序会作为或多或少的匿名用户进行自动化处理,并且无法在SharePoint网站上进行授权。

解决此问题的常用方法 - 拥有某种可信赖的帐户并在该帐户下运行您的网站代码。在访问站点时,您需要在进程帐户下运行代码(而不是模拟用户)。您需要查看代码才能获得合理的安全措施,因为错误会允许任何人使用您的网站访问该特殊帐户下的SharePoint /其他资源。

0

这是一个Kerberos问题,正如Kirill提到的那样。在开始设置SPN之前,请先按照this link的建议操作。

我最近有一个令人沮丧的一周,试图让Kerberos在一个锁定的域中工作,并且在最后我发现我所要做的就是将useAppPoolCredentials设置为true。如果没有帮助,this link也对我很有用。

祝你好运!