繁体   English   中英

如何增加Visual Studio中C#网页上的登录会话超时?

[英]How to increase login session timeout on c# web page in visual studio?

所以,这就是事情...当我使用login.aspx登录时,它会将我重定向到admin.aspx。 如果让管理员页面闲置几分钟,然后尝试打开W​​eb表单,则会给我一个错误。

"Object reference not set to an instance of an object."
**Source Error:**
Line 15:     protected void Page_Load(object sender, EventArgs e)
Line 16: { 
Line 17: string s=Session["po"].ToString();
Line 18: 
Line 19: Session["y"]=".";

这是Screeshot图像

现在,当我再次登录时,页面工作正常。 几分钟后,每当我尝试从管理页面打开页面或尝试刷新页面时,我再次收到此错误。 另一方面,我的页面很少,而且它们没有上面的会话代码,它们工作正常。 但是唯一的问题是,无需登录即可打开它们,使用此命令的命令不会直接打开。 每当我尝试打开它们而不登录时,我也会收到此错误。

您能解释一下如何解决此问题吗? 有什么办法可以增加会话超时时间? 这是某种会话注销吗?

正如乔纳森·蔡斯在留言中提到您可以配置Session timeout在web配置在ASP.NET会话超时

另一种解决方案是创建一个实际上不执行任何操作的服务,并在一定时间间隔内从客户端向该服务发出请求,或者仅调用一次以延长session时间。 例如,如果您的session在30分钟后过期,则间隔为29分钟。 这样,您可以选择要在哪个页面中“保留” session更长的时间或使其无限期。

服务: RetainSession.ashx

using System.Web;
using System.Web.SessionState;

namespace WebApplication
{
    public class RetainSession : IHttpHandler, 
        IRequiresSessionState
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Ok");
        }

        public bool IsReusable
        {
            get { return false; }
        }
    }
}

客户端:

var interval = 1000 * 60 * 29;
var intervalKey = window.setInterval(function(){
    $.get('/services/RetainSession.ashx?v='+Date.now());
},interval);

停止间隔:

window.clearInterval(intervalKey);

致电一次:

var timeout = 1000 * 60 * 29; 
window.setTimeout(function(){
    $.get('/services/RetainSession.ashx?v='+Date.now());
},timeout);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM