Счетчик сеансов Asp.NET MVC возвращается к 0 после нажатия кнопки

Я использую сеансы в ASP.NET MVC4 и храню некоторые данные в сеансе, все работает хорошо, пока я не нажму кнопку, и все сеансы в приложениях не станут нулевыми.

<button id="btnExport">Export To Excel</button>

$('#btnExport').click(function () {
        window.location.href = "/Home/DownloadFile?Id=2";
});

Как только я нажимаю "Метод действия" в моем контроллере, все сеансы в приложении становятся пустыми. Я попытался использовать запрос Gj Ajax вместо window.location.href.

вот моя настройка web.config

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

и в Global.asax у меня есть это

protected void Session_Start(Object sender, EventArgs e)
{
    Session["init"] = 0;
}

и я проверяю графа

var sessionCount = Session.Count;

Также с помощью визуального окна просмотра студии, чтобы контролировать мой объект сеанса.

Я использую проверку подлинности Windows.

Ребята, пожалуйста, помогите, почему сеансы удаляются по запросу кнопки?

Спасибо

1 ответ

Я думаю, что вы неправильно поняли концепцию. Session_start() будет запущен всегда, что приведет к повторной инициализации значения вашего сеанса в 0,

Обходной путь: Создайте базовый контроллер и унаследуйте его от каждого созданного вами контроллера. Override OnActionExecuting() функция в базовом контроллере, а затем манипулировать сессией Также сеанс в MVC находится в текущем контексте контроллера, поэтому используйте его широко

Другие вопросы по тегам