У меня есть следующий код, который повторно использует CookieContainer, который входит в систему при первом запросе, но просто использует контейнер cookie для запросов после.
По прошествии некоторого времени, если на простое сайт выдаст тайм-аут сеанса, мне нужно будет выполнить вход еще раз.
В: Могу ли я определить (с помощью объекта контейнера cookie), истекло ли время ожидания, или лучше определить, произошло ли это с помощью HttpWebResponse, который содержит текст, такой как «время ожидания сеанса». Каков наилучший способ сделать это?
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
}