是HttpClientFactory错误吗?

时间:2018-12-25 07:05:55

标签: asp.net-mvc asp.net-core httpclientfactory

我有一个Web应用程序和一个具有以下代码的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" };
    }

如果我是第一次(在Firefox上)调用我的Test操作,则响应将是第一次。但是,如果我第二次打电话(在Chrome中),响应将是大于1

这是不正确的,因为在其他浏览器中,必须将其视为首次。

在调查(使用调试)之后,在对API的第二个请求中,我发现池HttpClientHandler被重用了(正如我们对使用HttpClientFactory的期望),还有{{1} CookieContainer中的}也被重新使用, HasAccessed cookie的值为 true =>这引起了问题。 (我希望此cookie不存在,因为它被认为是Chrome对API的第一个请求)

这个问题有解决方案吗?

0 个答案:

没有答案