gpt4 book ai didi

asp.net - 重用 CookieContainer 时如何确定 session 超时

转载 作者:行者123 更新时间:2023-12-04 07:06:31 25 4
gpt4 key购买 nike

我有以下代码,它重新使用在第一个请求时登录的 CookieContainer,但在之后的请求中只使用 cookie 容器。

一段时间后,如果网站空闲,会出现 session 超时,我将需要再次执行登录。

问:我能否(使用 cookie 容器对象)确定超时是否发生,或者最好从 HttpWebResponse 中确定它是否发生,而 HttpWebResponse 恰好包含诸如“ session 超时”之类的文本。做这个的最好方式是什么?

        private static CookieContainer _cookieContainer;
private static CookieContainer CurrentCookieContainer
{
get
{
if (_cookieContainer == null || _cookieContainer.Count == 0)
{
lock (_lock)
{
if (_cookieContainer == null || _cookieContainer.Count == 0)
{
//_cookieContainer.GetCookies(
_cookieContainer = DoLogin();
}
}
}

return _cookieContainer;
}
set
{
_cookieContainer = value;
}
}

然后这个方法调用容器:
        public static string SomeMethod(SomeParams p)
{
HttpWebRequest request_thirdPartyEnquiryDetails = (HttpWebRequest)WebRequest.Create(thirdPartyEnquiryDetails);
CookieContainer cookieContainer = CurrentCookieContainer;
request_thirdPartyEnquiryDetails.CookieContainer = cookieContainer;
//... and it goes on to submit a search and return the response
}

最佳答案

好吧,由于超时是 30 分钟,我已将登录设置为在 25 分钟后重复。

private static DateTime? lastLoggedIn;

private static CookieContainer _cookieContainer;
private static CookieContainer CurrentCookieContainer
{
get
{
if (_cookieContainer == null || _cookieContainer.Count == 0 || !lastLoggedIn.HasValue || lastLoggedIn.Value.AddMinutes(25) < DateTime.Now)
{
lock (_lock)
{
if (_cookieContainer == null || _cookieContainer.Count == 0 || !lastLoggedIn.HasValue || lastLoggedIn.Value.AddMinutes(25) < DateTime.Now)
{
_cookieContainer = DoLogin();
lastLoggedIn = DateTime.Now;
}
}
}

return _cookieContainer;
}
set
{
_cookieContainer = value;
}
}

作为额外的预防措施,我检查了 HttpResponse 以获取在页面 session 超时时返回的文本(尽管现在预计这不会被看到)。如果发生这种情况,我将 lastLoggedIn 日期设置为 null 并再次运行搜索方法。

关于asp.net - 重用 CookieContainer 时如何确定 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com