ASP.NET Core 2.1:将客户端证书添加到已注册的类型化 HTTP 客户端

我介绍了ASP.NET 2.1核心的新方式等中描述的在我的应用程序中创建/注册HTTP客户端在这里。在我需要向键入的 HTTP 客户端添加客户端证书之前,它一直运行良好。


我做了很多研究,但我没有找到一种方法来做到这一点..


我期待这样的事情:


services.AddHttpClient<IMonitoringService, MonitoringService>(

            client =>

            {

                client.BaseAddress = new Uri(this.Configuration.GetSection("ServiceEndpoints:Monitoring").Get<ServiceEndpointConfiguration>().Endpoint);

                client.ClientCertificates.Add(new X509Certificate2(/* ... */)); // Error: `ClientCertificates` doesn't exists.

            });

或者像这样:


services.AddHttpClient<IMonitoringService, MonitoringService>(

                client => client.BaseAddress = new Uri(this.Configuration.GetSection("ServiceEndpoints:Monitoring").Get<ServiceEndpointConfiguration>().Endpoint))

            .AddHttpMessageHandler(

                () =>

                {

                    var handler = new HttpClientHandler();

                    handler.ClientCertificates.Add(new X509Certificate2(/* ... */));

                    return handler; // Error: Expected return type is `DelegatingHandler`.

                });

但是这种方式不存在..


有没有办法做到这一点?


慕少森
浏览 160回答 1
1回答

千巷猫影

您的经验是正确的AddHttpMessageHandler,DelegatingHandler因为此函数用于扩展请求管道,因此需要返回类型。为了创建HttpClientHandler附加了客户端证书的 ,您应该使用ConfigurePrimaryHttpMessageHandler来创建和返回 的配置实例HttpClientHandler。
打开App,查看更多内容
随时随地看视频慕课网APP