2016-05-19 4 views
1

Я использую MVC 4.0. События в firewall global.asax, когда я просматриваю сайт, сначала перейдя на домашнюю страницу. Проблема в том, что когда я просматриваю прямую страницу на веб-сайте с некоторыми параметрами url, событие Session_Start не срабатывает. Почему? Могу ли я запустить его вручную?MVC 4.0 События в global.asax не срабатывают

+0

Функция Session_Start запускается только при первом посещении и истечении срока действия пользователя. Если вы используете файлы cookie сеанса, вы удалили его перед посещением вашего сайта с параметрами url? – Danscho

ответ

2

Session_start не срабатывает, если вы на самом деле не читаете или не записываете объект сеанса.

Если вы хотите использовать событие session_start но не нужно использовать хранилище сеанса на всех, вы можете добавить следующий код в контроллер

[SessionState(SessionStateBehavior.ReadOnly)] 
public class MyController : Controller 
{ 

Это вызовет событие session_start огня без вас чтобы сохранить что-либо в объекте сеанса.

+0

Будет ли это блокировать меня от записи на сессию? –

+0

Если для запроса включено состояние сеанса только для чтения. Это означает, что состояние сеанса не может быть обновлено. Этот параметр отменяет все поведение состояния сеанса, которое было определено путем проверки обработчика запроса. –

+0

Тогда я думаю, что для меня лучше всего написать какое-то значение для сеанса, поэтому он вызовет событие Session_Start. –