会话中有些数据丢失了MVC

时间:2018-02-15 20:05:52

标签: asp.net .net asp.net-mvc session

我们的主要项目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);
            }
        }

1 个答案:

答案 0 :(得分:0)

尝试使用它:

Session.Timeout = 60; // 60 is number of minutes

您也可以通过web.config中的以下键配置会话超时。

<system.web>
    <sessionState mode="InProc" timeout="30" />
</system.web>