我们的主要项目MVC 5.我总是使用Session对象没有问题。但在一个案例中,我遇到了问题。通常,我们使用4个主会话密钥。这很好用。该键在控制器级别分配过滤器。
最近我们开发了一些东西,应该是跨应用程序和特定于会话的共享数据。所以,我将值分配给会话,我可以看到并使用控制器的相同操作。但是存在一个问题,例如,我刷新页面或点击某些内容并触发操作,我的会话密钥不存在。
我们正在使用InProc和会话超时60.此外,其他会话密钥没有问题。刷新页面后甚至会出现问题。
这种用法有什么问题?
/// Index of some controller
public virtual ActionResult Index(string key)
{
if(InquiryId == 1){
var result = RequestClient("...");
InquiryId = result.Id;
}
...
}
在基础控制器中它的相关部分;
public int InquiryId
{
get
{
if (Session["InquiryId"] != null)
{
return (int)Session["InquiryId"];
}
return 1;
}
protected set
{
_inquiryId = value;
HttpContext.Session.Add("InquiryId", value);
}
}
答案 0 :(得分:0)
尝试使用它:
Session.Timeout = 60; // 60 is number of minutes
您也可以通过web.config中的以下键配置会话超时。
<system.web>
<sessionState mode="InProc" timeout="30" />
</system.web>