1

我正在使用 .NET Core 3.1。

在启动时,我添加以下内容:

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient<IApns, Apns>().ConfigurePrimaryHttpMessageHandler(() =>
    {
        var handler = new HttpClientHandler { SslProtocols = SslProtocols.Tls12 };

        // How do I access memory cache (MyConfig expect it) - normally I use it injected. 
        var certificate = new MyConfig(...).GetCertificate 

        handler.ClientCertificates.Add(certificate);
        return handler;
    });
}

问题是MyConfig一个期望的类IMemoryCache

public MyConfig(IMemoryCache cache)
{
    _cache = cache;
}

证书从内存缓存中存储和加载。请问我该如何解决?

4

1 回答 1

3

您可以使用通过以下重载传递的对象来创建新IMemoryCache对象:IServiceProviderConfigurePrimaryHttpMessageHandler

services.AddHttpClient<IApns, Apns>().ConfigurePrimaryHttpMessageHandler((serviceProvider) =>
{
    var memoryCache = serviceProvider.GetService<IMemoryCache>();
    
    var certificate = new MyConfig(memoryCache).GetCertificate();
    // ...
}

如果MyConfig作为服务注入,您也可以改为加载这个。

于 2020-07-23T11:21:09.107 回答