Asp.net 如何使用HttpClientFactory为命名的HttpClient定义HttpClientHandler
旧代码:Asp.net 如何使用HttpClientFactory为命名的HttpClient定义HttpClientHandler,asp.net,asp.net-core,.net-core,dotnet-httpclient,httpclientfactory,Asp.net,Asp.net Core,.net Core,Dotnet Httpclient,Httpclientfactory,旧代码: Client = new HttpClient(new HttpClientHandler() { DefaultProxyCredentials = CredentialCache.DefaultNetworkCredentials }); // set an default user agent string, some services does not allow emtpy user agents if (!Client.DefaultRequestHeaders.Cont
Client = new HttpClient(new HttpClientHandler() { DefaultProxyCredentials = CredentialCache.DefaultNetworkCredentials });
// set an default user agent string, some services does not allow emtpy user agents
if (!Client.DefaultRequestHeaders.Contains("User-Agent"))
Client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0");
正在尝试使用新的ASP.NET Core 2.1 HttpClientFactory实现相同的功能:
services.AddHttpClient("Default", client =>
{
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0");
}).ConfigurePrimaryHttpMessageHandler(handler => new HttpClientHandler() { DefaultProxyCredentials = CredentialCache.DefaultNetworkCredentials });
不幸的是,我得到了一个HTTP407(代理身份验证)错误。
我做错了什么?通常建议使用一个静态类,其中包含客户端名称的字符串常量 比如:
public static class NamedHttpClients {
public const string Default = "Default";
}
然后确保正确配置了命名客户端,在您的特定情况下如下所示:
services
.AddHttpClient(NamedHttpClients.Default, client => {
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0");
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler() {
DefaultProxyCredentials = CredentialCache.DefaultNetworkCredentials
});
从那里,您可以从注入的IHttpClientFactory
var client = httpClientFactory.CreateClient(NamedHttpClients.Default);
并按原意使用。你的问题怎么没有更多的赞成票?当你搜索这个时,谷歌上几乎什么都没有。