2015-08-08 1 views
0

Я работаю над разработкой приложения MVC5. Я использовал сеанс для хранения пользовательских данных.Сессия проходит очень часто в приложении MVC

Ниже приведен код, который я использую для хранения данных сессии

if (Session["UserData"] == null) 
{ 
    Session["UserData"] = _objLoginSession; 
} 

Я также увеличил тайм-аут сеанса в web.config, который, как показано ниже

<sessionState mode="InProc" timeout="60"> 
</sessionState> 

Мой режим аутентификации также нет

<authentication mode="None" /> 

Но когда я запускаю свое приложение, оно истекает через 1 - 2 минуты.

Может ли кто-нибудь направить меня на это?

ответ

2

Одна из причин, почему сеанс ASP.NET может истечь , истекает, что приходит к выводу: данные сеанса хранятся в памяти, так как вы указали режим InProc, поэтому, если вы перекомпилируете свое приложение в Visual Studio или по какой-либо причине ваше приложение перезапустите, вы потеряете данные сеанса. И есть множество причин, по которым ваше приложение может быть перезапущено веб-сервером. Такие вещи, как изменение файла web.config или некоторых файлов в папке bin или на вашем компьютере, запускаются с низкой памятью.

Все эти причины указывают на то, что вы никогда не должны (за исключением разработки) сохранять данные сеанса в памяти (InProc).

+0

Итак, что нужно сделать, чтобы преодолеть это? – User5590

+0

Каков предложенный способ? – User5590

+1

Никогда не используйте 'InProc' в производстве и при разработке помните, что если вы перекомпилируете свое приложение, вы потеряете данные. Вы также можете переключиться на некоторое хранилище постоянных сеансов в разработке, если хотите сохранить данные сеанса с помощью перезапуска приложений. Или еще лучше: вообще не используйте никаких сеансов. Создайте приложение таким образом, чтобы он был полностью без гражданства. Я всегда рассматривал сеансы ASP.NET как ненужное зло. –

Смежные вопросы