Это ошибка HttpClientFactory? - PullRequest
       57

Это ошибка HttpClientFactory?

0 голосов
/ 25 декабря 2018

У меня есть веб-приложение и приложение 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)

Есть ли какое-либо решение этой проблемы?

...