使用HttpClientFactory安全吗?

tuq*_*tuq 6 asp.net dotnet-httpclient .net-core asp.net-core httpclientfactory

在我的asp.net核心MVC应用程序中,我HttpClientFactory用来创建HttpClient对API服务器的请求的对象。

遵循Microsoft文档,HttpClient每次调用HttpClientFactory.CreateClient()都会创建一个新的对象,因此将值设置为会很安全HttpClient.DefaultRequestHeaders

关于HttpMessageHandler对象,因为它们已被合并,以后可以重用。因此,如果它们包含cookie信息(例如:将cookie设置为HttpClientHandlerobject),则将违反线程安全。

我的假设是正确的吗?我们如何处理这个问题?

如果将cookie设置为可以HttpRequestMessage,然后发送给它,可以HttpClient吗?

tuq*_*tuq 9

我已经找到使用HttpClientFactory的解决方案。我们应该禁用CookieContainerprimary HttpMessageHanlder(是HttpClientHandler):

services.AddHttpClient("configured-inner-handler")
.ConfigurePrimaryHttpMessageHandler(() =>
{
    return new HttpClientHandler()
    {
        UseCookies = false
    };
});
Run Code Online (Sandbox Code Playgroud)