Счетчик сеансов 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 находится в текущем контексте контроллера, поэтому используйте его широко