Довольно сложно понять твой вопрос, ИМХО, но я попробую.
Насколько я понимаю, вы делаете что-то вроде:
string helloWorld = string.Empty;
if (this.Session["myObject"] == null)
{
// The object was removed from the session or the session expired.
helloWorld = this.CreateNewMyObject();
}
else
{
// Session still exists.
helloWorld = this.Session["myObject"].ToString(); // <- What if the session expired just now?
}
или
// What if the session existed here...
if (this.Session["myObject"] == null)
{
this.Session["myObject"] = this.CreateNewMyObject();
}
// ... but expired just there?
string helloWorld = this.Session["myObject"].ToString();
Я думал, что Session
объект управляется тем же потоком, что и запрос страницы, что будет означать, что безопаснее проверить, существует ли объект, чем использовать его без try / catch.
Я был не прав:
Для объектов Cache вы должны осознавать тот факт, что вы имеете дело по существу с объектом, доступ к которому осуществляется через несколько потоков
Источник: Кэш ASP.NET и состояние сеанса
Я также ошибался, если не внимательно прочитал ответ Роберта Коритника, который на самом деле четко отвечает на вопрос.
На самом деле вас предупреждают о том, что объект может быть удален во время запроса страницы. Но поскольку Session
продолжительность жизни зависит от запросов страниц, это будет означать, что вы должны учитывать удаление переменных сеанса , только если ваш запрос занимает больше времени, чем тайм-аут сеанса (см. Как обрабатывается сеанс в ответе Роберт Коритник).
Конечно, такая ситуация очень редкая. Но если в вашем случае вы уверены, что запрос страницы может занять более 20 минут (время ожидания сеанса по умолчанию), чем да, вы должны принять во внимание, что объект может быть удален после того, как вы проверили, существует ли он, но прежде чем вы действительно используете его.
В этой ситуации вы, очевидно, можете увеличить время ожидания сеанса или использовать try / catch при доступе к объектам сеанса. Но ИМХО, если запрос страницы занимает десятки минут, вы должны рассмотреть другие варианты, такие как службы Windows, для выполнения этой работы.