在使用.net 4.5中的HttpClient执行基本身份验证时,我发现它发出了2个请求。
有什么办法阻止它这么做吗?
var credential = new NetworkCredential
{
UserName = username,
Password = password
}
var httpClientHandler = new System.Net.Http.HttpClientHandler
{
Credentials = credential
};
httpClient = new HttpClient(httpClientHandler, true)
{
BaseAddress = address
};发布于 2013-11-28 15:23:18
尝试设置以下内容:
httpClientHandler.PreAuthenticate = true;我认为第一个请求仍然会得到初始的401,但是到最后一个正斜杠的相同URI的后续请求应该总是发送不带401的身份验证头。
发布于 2013-11-28 15:22:55
你可以尝试按照托贝罗斯的回答来设置HttpClientHandler.PreAuthenticate,尽管文档表明它只有在第一个请求之后才会有帮助:
除第一个请求外,PreAuthenticate属性指示是否将身份验证信息与后续请求一起发送到与特定Uri匹配的Uri,直到最后一个正斜杠,而不等待服务器质询。
它不会对第一个请求有帮助,但它可能有助于减少之后的往返次数。
另一件可以尝试的事情是在HttpClient.DefaultRequestHeaders中包含“授权”。如果成功了,我会有点惊讶,但至少值得一试。
发布于 2014-01-29 06:26:16
在寻找另一个NetworkCredentials问题的答案时,我偶然发现了两个问题,它们的答案可能就是您正在寻找的答案:
Here回答说,至少WebRequest有默认行为,即只在获得401后发送凭据。而且,看起来解决方案可能是使用CredentialCache。
我不确定CredentialCache是否可以与HttpClient一起使用,但如果不能,您可以切换到WebRequest或WebClient,或者这些信息只是将您带到了另一个解决方案的道路上。
https://stackoverflow.com/questions/20260013
复制相似问题