我正在尝试使用HttpClient访问网站中的文件,但我获得了401 Unauthorized。
网站配置了
<authentication mode="Windows" />
...
<authorization>
<allow users="*" />
</authorization>
IIS仅配置为Windows身份验证。
我可以通过指定URL中的地址来使用Internet Explorer访问该文件,并且不会提示我输入用户名/密码。
当尝试使用HttpClient进行“相同”操作时,我获得了401 Unauthorized。
var httpClientHandler = new HttpClientHandler { UseDefaultCredentials = true };
using (var httpClient = new HttpClient(httpClientHandler))
{
var response = httpClient.GetAsync("http://example.com/welcome.png");
// The response is 401 Unauthorized.
}
我做错了什么?
更新:
使用基本身份验证并指定httpClientHandler.Credentials = new NetworkCredential(“DOMAIN \ my.name”,“mypassword”)时,它可以正常工作,但不言而喻,这不是一个选项。需要Windows身份验证,而不必指定用户名/密码。
答案 0 :(得分:0)
您可以在IE中查看该文件,因为您已经登录到计算机,IE负责将令牌/票证(成功登录后生成)传递给服务器以通过Windows身份验证。
您可以参考MSDN并了解如何使用HTTPClient进行Windows身份验证 http://social.msdn.microsoft.com/Forums/windowsapps/en-US/78c981f4-9dc6-4785-a8ff-f8e90d7c93b7/is-there-a-way-to-get-windows-authentication-with-httpclient