.net core HttpClient。忽略AddHttpClient配置的超时

.net core HttpClient。忽略AddHttpClient配置的超时,.net-core,httpclientfactory,.net Core,Httpclientfactory,当使用推荐的AddHttpClient扩展来配置IHTTpClient工厂并包括一些默认的HttpClient设置时,在随后创建的HttpClient实例中看不到我为Timeout属性设置的值 演示使用Azure函数,它类似于ASP.NET内核 public class Startup : FunctionsStartup { public static readonly int PushTimeoutMs = 3000; public override void Config

当使用推荐的
AddHttpClient
扩展来配置
IHTTpClient工厂
并包括一些默认的
HttpClient
设置时,在随后创建的
HttpClient
实例中看不到我为
Timeout
属性设置的值

演示使用Azure函数,它类似于ASP.NET内核

public class Startup : FunctionsStartup
{
    public static readonly int PushTimeoutMs = 3000;

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddHttpClient("PushNotification", client =>
        {
            client.Timeout = TimeSpan.FromMilliseconds(PushTimeoutMs);
        });
    }
}
创建客户端

public class TestFunctionTwo
{
    public TestFunctionTwo(IHttpClientFactory httpClientFactory)
    {
        this.HttpClientFactory = httpClientFactory;
    }

    //

    public IHttpClientFactory HttpClientFactory { get; }

    //

    [FunctionName("TestFunctionTwo")]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        await Task.Delay(100);

        return new OkObjectResult($"OK - Timeout: {this.HttpClientFactory.CreateClient().Timeout.TotalMilliseconds}");
    }
}

这是因为您需要创建一个与您配置的同名的
HttpClient
,即
“PushNotification”

OK - Timeout: 100000
return new OkObjectResult($"OK - Timeout: {this.HttpClientFactory.CreateClient("PushNotification").Timeout.TotalMilliseconds}");