在我的asp.net核心MVC应用程序中,我使用HttpClientFactory为发送到API的请求创建HttpClient对象。
遵循微软文档,每次我调用HttpClientFactory.CreateClient()时都会创建新的HttpClient对象,因此将值设置为HttpClient.DefaultRequestHeaders是安全的。
关于HttpMessageHandler对象,因为它们是池化的,可以在以后重用。因此,如果它们持有cookies信息(例如:将cookies设置为HttpClientHandler对象),我们将违反线程安全。
我的假设是正确的吗?我们该如何处理这个问题呢?
如果我们在HttpRequestMessage中设置cookie,然后用HttpClient发送,可以吗?
发布于 2018-12-28 22:22:10
我已经找到了使用HttpClientFactory的解决方案。我们应该禁用主HttpMessageHanlder的CookieContainer (它是一个HttpClientHandler):
services.AddHttpClient("configured-inner-handler")
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
UseCookies = false
};
});https://stackoverflow.com/questions/53881531
复制相似问题