Это ошибка HttpClientFactory?
У меня есть веб-приложение и приложение API со следующим кодом:
веб-сайт:
public async Task<string> Test()
{
var httpClient = _clientFactory.CreateClient("test");
var response = await httpClient.GetAsync("http://api.local:5089/api/values");
var str = await response.Content.ReadAsStringAsync();
return str;
}
API:
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
if (HttpContext.Request.Cookies.ContainsKey("HasAccessed"))
{
return new string[] { "AccessCount", "Greater than 1" };
}
HttpContext.Response.Cookies.Append("HasAccessed", "true");
return new string[] { "AccessCount", "First time" };
}
Если я позвоню Test
действие в первый раз (на Firefox), ответ будет первый раз. Но если я позвоню второй раз (в Chrome), ответ будет больше 1.
Это не правильно, потому что в другом браузере его нужно рассматривать как первый раз.
После исследования (с помощью отладки) во втором запросе к API я обнаружил, что пул HttpClientHandler
был повторно использован (как и ожидалось, когда мы используем HttpClientFactory
) а также CookieContainer
из HttpClientHandler
также использовался повторно, cookie HasAccessed имел значение true => Это вызвало проблему. (Я ожидал, что этот cookie не существует, так как он рассматривался как первый запрос к API от Chrome)
Есть ли решение этой проблемы?