首页 > 解决方案 > HttpClient 注入单例

问题描述

我目前正在使用 TypedClient,只是想更好地理解单例的问题以及 HttpClientFactory 的工作原理。

在阅读了Steve Gordon的文章后,我只想确保我正确理解了这一点并使用了正确的方法。

我有一个使用services.AddHttpClient<MyClient>.

public class MyClient
{
    private HttpClient _client;

    public MyClient(HttpClient client)
    {
        _client = client;
    }
}

我还有一个后台服务,它是一个单例,使用注册services.AddSingleton<IMyBackgroundService, MyBackgroundService>()

public class MyBackgroundService : IMyBackgroundService
{
    private MyClient _myClient;

    public MyBackgroundService(MyClient myClient)
    {
        _myClient = myClient;
    }
}

_myClient在单例中的实例MyBackgroundService在实践中是否也不仅仅是单例?


如果我有一个名为的后台方法,在其中创建一个范围然后注入并请求一个实例DoJob不是更好吗?DoJobHttpClientFactoryMyClient

谢谢。

标签: .net-core

解决方案


我的理解是,您MyBackgroundService不应该是单例,而是范围。

我认为要么就是这样,要么MyClient直接将你的注入控制器,否则正如你所说,实例MyClient将成为单例。


推荐阅读