在我的asp.net核心MVC应用程序中,我使用HttpClientFactory
创建HttpClient
对象来向API服务器发送请求。
遵循Microsoft文档,每次调用HttpClient
都会创建一个HttpClientFactory.CreateClient()
对象,因此将值设置为HttpClient.DefaultRequestHeaders
是安全的。
大约HttpMessageHandler
个对象,因为它们已合并,以后可以重新使用。因此,如果它们包含cookie信息(例如:将cookie设置为HttpClientHandler
对象),我们将违反线程安全。
我的假设是正确的吗?我们如何处理这个问题?
如果我们在HttpRequestMessage
中设置cookie是否可以,然后我们将其与HttpClient
一起发送?
答案 0 :(得分:7)
我找到了使用HttpClientFactory的解决方案。我们应该禁用主要CookieContainer
中的HttpMessageHanlder
(这是HttpClientHandler
):
services.AddHttpClient("configured-inner-handler")
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
UseCookies = false
};
});