2014-09-26 8 views
1

У меня есть сайт ASP.NET MVC, что нужно для запуска на компьютере 24 часа/24ASP.NET MVC переменные сессии TIMEOUT

Я использую сеанс для хранения переменных, которые я получаю через файл конфигурации или внешнего API:

HttpContext.Session["Value"] 

в моем файле web.config, я установил Таймаут сессии до максимума:

<system.web> 
    <sessionState timeout="525600" /> 

на сайте должна отображаться в течение длительного времени и до сих пор переменные сессии, когда я нажимаю на но т. (возможно, через 1-2 дня)

Будет ли это работать? Есть ли что-то в настройке IIS?

Я спрашиваю, потому что это трудно проверить это ...

+0

Опираясь на сеансы, на самом деле не выход. Есть ли причина, по которой вы не можете использовать базу данных или файлы cookie? – Jamie

ответ

2

Ну, если вы используете InProc сессии, то вам нужно будет пойти в IIS и установить рециркуляцию пула приложений на длинном отрезке (или отключить) , то же самое с временем простоя (либо установить его на 0, чтобы всегда запускать или реализовывать службу pinging на вашей веб-странице).

Лучшим вариантом было бы, если вы сохраните переменные сеанса в постоянном хранилище (либо в базе данных, либо в файле или в отдельном процессе).

Вы можете сделать это мастерить с web.config (это пример конфигурации)

<sessionState mode="SQLServer"  
    regenerateExpiredSessionId="true " 
    timeout="525600" 
    sqlConnectionString="Data Source=MySqlServer;Integrated Security=SSPI;" 
    stateNetworkTimeout="30"/> 

Подробнее об этом here и here.

Существует также вопрос: почему вы хотите это сделать? Если вы хотите сохранить данные пользователя в течение более длительного периода времени, возможно, стоит посмотреть на HTML 5 local storage.

Третий вариант заключается в том, что сервер не имеет состояния и все данные хранятся в переменных javascript. «Плохо» заключается в том, что вам нужно будет отправить все, что связано с каждым запросом, хорошо, что эта страница будет «работать» до тех пор, пока откроется окно браузера.

Опора на переменные сеанса в течение более длительных периодов времени может привести к ошибкам, которые трудно воспроизвести и плохому пользователю, потому что страница перестает работать без видимых причин. Старайтесь избегать этого, вы просто создадите ненужные проблемы =).

1

Вы можете установить пул приложений в режиме alwaysRunning и тайм-аут простоя 0:

enter image description here

но пул приложений будет еще переработаны (и сеанс восстановления) при развертывании нового приложения (изменить web.config , содержимое папки bin) или перезапустите сервер. Чтобы преодолеть эту проблему, установите режим состояния сеанса в режим State Server или SQL Server.

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