Windows身份验证不适用于HttpClient

Windows身份验证不适用于HttpClient,httpclient,windows-authentication,Httpclient,Windows Authentication,我正在尝试使用HttpClient访问网站中的文件,但未经授权 var httpClientHandler = new HttpClientHandler { UseDefaultCredentials = true }; using (var httpClient = new HttpClient(httpClientHandler)) { var response = httpClient.GetAsync("http://example.com/welcome.png");

我正在尝试使用HttpClient访问网站中的文件,但未经授权

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.
}
该网站配置为

<authentication mode="Windows" /> 
...
<authorization>
  <allow users="*" />
</authorization>
我做错了什么

更新:


当使用基本身份验证并指定httpClientHandler.Credentials=newnetworkcredential(“DOMAIN\my.name”、“mypassword”)时,它可以工作,但不用说这不是一个选项。需要Windows身份验证,不必指定用户名/密码。

您可以在IE中查看文件,因为您已经登录到计算机,IE负责将令牌/票据(成功登录后生成)传递到服务器以通过Windows身份验证

您可以参考MSDN,了解如何使用HTTPClient通过Windows身份验证

是的,我提到IE是为了证明IIS设置是有效的。我发现在指定httpClientHandler.Credentials=new NetworkCredential(“域\\my.name”,“mypassword”)时,它可以与基本身份验证一起工作,但我需要它不必“手动”指定凭据,也可以与WinAuth一起工作。我读了你链接到的那篇文章,但我没有看到你认为我遗漏了什么?我指定UseDefaultCredentials=true。defaultWindowsCredentials和privateNetworkClientServer似乎与Windows Phone有关,我正在开发一个WPF应用程序。我对WPF API知之甚少。我认为您可以使用这里评论部分提到的WebRequestHandler---------------------------------------------------------------WebRequestHandler=new WebRequestHandler(){AllowAutoRedirect=false,UseProxy=false,Credentials=System.Net.CredentialCache.DefaultNetworkCredentials};HttpClient=新的HttpClient(处理程序)--------------------------