c# – FormsAuthentication.SignOut抛出NullReferenceException
这个问题似乎与
this的帖子有关,但是我无法从线程中推断出一个解决方案.
我在我继承的应用程序中注意到这个代码(在记录异常被记录的日志文件中): protected void Session_End(object sender,EventArgs e) { try { FormsAuthentication.SignOut(); FormsAuthentication.RedirectToLoginPage(); //if (this.Context.Handler is IRequiresSessionState || this.Context.Handler is IReadOnlySessionState) //{ // FormsAuthentication.SignOut(); // FormsAuthentication.RedirectToLoginPage(); //} } catch (Exception ex) { this.GetType().GetLogger().Error(ex); } } 我想知道一些事情首先,SignOut如何抛出空引用异常?这是一个例外的情况,还是在我的程序中做某些固有的错误?接下来,在抛出此异常之前,应该如何进行测试?
谢谢 解决方法
重要的是要意识到Session_End不一定在HTTP请求的上下文中执行.当会话超时时,它可能会运行.那时候你不能向客户发送任何东西,因为它根本就不在了!
因此,您不应该尝试在Session_End中删除表单身份验证cookie.如果你想要的话,你应该在应用程序中某处点击“注销”按钮的时候尽快做到这一点.如果您需要用户的表单身份验证凭证在超时发生后到期,您应该在配置文件中设置适当的cookie过期时间(可能等效于会话超时值). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |