7

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

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

关于HttpMessageHandler对象,因为它们是池化的,以后可以重复使用。因此,如果他们持有 cookie 信息(例如:将 cookie 设置为HttpClientHandler对象),我们将违反线程安全。

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

如果我们设置 cookie 是否可以HttpRequestMessage,然后我们将发送它HttpClient

4

1 回答 1

12

我找到了使用 HttpClientFactory 的解决方案。我们应该禁用CookieContainer主要HttpMessageHanlder的(它是 a HttpClientHandler):

services.AddHttpClient("configured-inner-handler")
.ConfigurePrimaryHttpMessageHandler(() =>
{
    return new HttpClientHandler()
    {
        UseCookies = false
    };
});
于 2018-12-28T14:22:09.670 回答