在HTTP会话超时后保留状态

时间:2012-08-31 13:56:59

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

在我的asp.net应用程序中,HTTP会话在30分钟后超时,用户被重定向到登录页面。这是一个场景:

  1. 用户点击要编辑的项目,其网址如下:

    http://localhost/app/edit?id=1

  2. 用户在页面上进行某些更改以编辑id = 1的项目,但不会“保存”它们30分钟。

  3. 在第31分钟,他点击了保存,然后他被重定向到登录页面,如果他输入了正确的凭据,我有一个重定向的返回URL。
  4. 保留用户离开页面的状态的正确方法是什么? 我所拥有的只是返回URL,其中包含登录请求,如下所示:http://localhost/app/edit

    单击“保存”会执行POST请求,但不会在查询字符串中传递任何内容。

    我希望能够重定向到http://localhost/app/edit?id=1

2 个答案:

答案 0 :(得分:2)

除非您专门构建了一种机制来保存基于ASP.NET会话的状态机制 ,否则会话会在超时时丢失。理论上,您可以构建一个状态系统,该系统以每个用户ID为基础存储来自所选页面/输入的数据的中间草稿,其中包含可能以这种方式“孤立”的数据的页面可以在某种程度上被检索,但这也需要定期后台将数据保存回那些被认为足够重要的页面上的数据库,以保留因超时而丢失的更改。

答案 1 :(得分:0)

当POST发生时,您拥有原始URL,以及包含所有表单值的请求对象。

请求将被拦截,并重定向到登录屏幕。此时,您需要保存原始URL和请求值,处理登录,然后使用原始值重定向到原始URL。

您的POST请求是什么样的?是否有一个对象可以填入临时存储(会话等)或处理表单集合?