首页 > 解决方案 > 如何使用 Redis 缓存或存储 HttpClient 的状态

问题描述

我只是在想这是否可能。所以我想要做的是当我访问我的网站并尝试使用 HttpClient 以编程方式登录它时。有没有办法保存会话或 HttpClient 的状态,以便我可以检查它是否有会话并避免一遍又一遍地登录?

我正在尝试存储 cookie 并使用它们,但仍然无法正常工作。

这是我的代码

    private static List<Cookie> _cookies = new List<Cookie>();


    bool isAuthenticated = false;
    var cookieContainer = new CookieContainer();
    using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
    using (var httpClient = new HttpClient(handler))
    {

        httpClient.BaseAddress = new Uri("https://my.website.url/");

        if (_cookies.Any())
        {
            _cookies.ForEach(cookie =>
            {
                cookieContainer.Add(httpClient.BaseAddress, cookie);
            });

            isAuthenticated = true;
        }

        if (!isAuthenticated)
        {
            var checkCookie = await NavigateToCentralLogin(httpClient);

            if (!checkCookie.Contains("WELCOME"))
            {
                var loginBody = await Login(httpClient, USERNAME, PASSWORD);

                cookies = cookieContainer.GetCookies(httpClient.BaseAddress).Cast<Cookie>();

                _cookies.AddRange(cookies.ToList());
            }
        }

        var centralLoginbody = await NavigateToCentralLogin(httpClient);

        var accountListBody = await NavigateToViewAccountList(httpClient, centralLoginbody);
    }

标签: c#.net.net-coreredis

解决方案


推荐阅读