ASP核心HttpClientFactory模式中使用客户端证书

问题描述 投票:3回答:2

任何一个知道如何使用HttpClientFactory时使用客户端证书?在我发现所有的例子,你需要提供在HttpMessageHandler构造一个HttpClient,使用HttpClientFactory时不可用

        services.AddHttpClient("NamedClient", client =>
        {
            var handler = new HttpClientHandler();
            X509Certificate2 certificate = GetMyX509Certificate();
            handler.ClientCertificates.Add(certificate);
            client. // ?? How do I set the handler?
        });
c# asp.net-core asp.net-core-2.1
2个回答
2
投票

我能得到它的帮助工作从@agua来自火星

        services.AddHttpClient("myservice", client =>
        {
            client.BaseAddress = new Uri("https://localhost:8717");
        }).ConfigurePrimaryHttpMessageHandler(h =>
        {
            var handler = new HttpClientHandler();
            handler.ClientCertificates.Add(GetCert());
            return handler;
        });

1
投票

您在使用HTTP消息处理流水线添加HttpMessageHandler

services.AddHttpMessageHandler<HttpClientHandler>()

而你使用注册您的处理程序:

services.AddTransient(provider =>
{
    var handler = new HttpClientHandler();
    X509Certificate2 certificate = GetMyX509Certificate();
    handler.ClientCertificates.Add(certificate);
    return handler;
});
© www.soinside.com 2019 - 2024. All rights reserved.