我在ASP.NET MVC4中使用Sessions,我在会话中存储了一些数据,一切正常,直到我点击一个按钮,应用程序中的所有会话都变为空。
<button id="btnExport">Export To Excel</button>
$('#btnExport').click(function () {
window.location.href = "/Home/DownloadFile?Id=2";
});
只要我在控制器中点击Action Method,应用程序中的所有会话都为空。我尝试过使用Ajax GET请求而不是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;
还使用visual studio观察窗来监视我的会话对象。
我正在使用Windows身份验证。
你们可以请求帮助,为什么按钮请求会删除会话?
由于
答案 0 :(得分:0)
我认为你误解了这个概念。 Session_start()
将始终被解雇,这会导致您的会话值重新初始化为0
。
解决方法 :创建一个基本控制器并将其继承到您创建的每个控制器中。覆盖基本控制器中的OnActionExecuting()
函数,然后操纵您的会话。此外,MVC中的会话驻留在当前的Controller上下文中,因此广泛使用它