我有一个ASP.NET应用程序,我正在ASP.NET开发服务器上进行测试。该应用程序旨在从Intranet共享点站点下载文件。我为此目的使用WebClient.DownloadFile()
。但我得到以下例外 -
“远程服务器返回错误:(401)未经授权。”
我在运行应用程序时登录Windows的帐户可以访问我要下载的资源。
我尝试在IIS 7.5
上运行应用程序,为应用程序池提供下载文件所需的身份。但仍然有同样的错误。
知道究竟是什么问题以及如何克服它?提前谢谢!
答案 0 :(得分:2)
这是双跃点授权的问题。看看这个:http://weblogs.asp.net/owscott/archive/2008/08/22/iis-windows-authentication-and-the-double-hop-issue.aspx
答案 1 :(得分:1)
假设SharePoint网站上的Windows(NTLM)身份验证正常。
大多数人都会遇到设计行为“双跳委托”有时称为“一跳NTLM地狱” - 从客户端(浏览器)传递到服务器(您的ASP.Net应用程序)的凭据不能在框外使用。因此,您的ASP.Net应用程序将自动更新为匿名用户,无法在SharePoint网站上进行授权。
解决问题的常用方法 - 拥有某种可信帐户并在该帐户下运行您网站的代码。与访问网站时相比,您在进程'帐户下运行代码(不模仿用户)。您需要检查代码以获得合理的安全措施,因为错误允许任何人使用您的网站访问该特殊帐户下的SharePoint /其他资源。
答案 2 :(得分:1)
通过将WebClient的 UseDefaultCredentials 属性设置为true来解决问题
答案 3 :(得分:0)