授予从sharepoint网站下载文件的ASP.NET访问权限

时间:2012-08-22 06:44:54

标签: c# asp.net iis-7.5

我有一个ASP.NET应用程序,我正在ASP.NET开发服务器上进行测试。该应用程序旨在从Intranet共享点站点下载文件。我为此目的使用WebClient.DownloadFile()。但我得到以下例外 -

  

“远程服务器返回错误:(401)未经授权。”

我在运行应用程序时登录Windows的帐户可以访问我要下载的资源。

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

知道究竟是什么问题以及如何克服它?提前谢谢!

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

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

大多数人都会遇到设计行为“双跳委托”有时称为“一跳NTLM地狱” - 从客户端(浏览器)传递到服务器(您的ASP.Net应用程序)的凭据不能在框外使用。因此,您的ASP.Net应用程序将自动更新为匿名用户,无法在SharePoint网站上进行授权。

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

答案 2 :(得分:1)

通过将WebClient的 UseDefaultCredentials 属性设置为true来解决问题

答案 3 :(得分:0)

正如Kirill所说,这是一个Kerberos问题。在开始设置SPN之前,请先按照this link上的建议进行操作。

我最近有一个令人沮丧的一周试图让Kerberos在一个锁定的域上工作,最后我发现所有我必须做的就是将useAppPoolCredentials设置为true。

如果这没有用,this link对我来说也很有用。

祝你好运!