gpt4 book ai didi

c# - FormsAuthentication.SignOut 抛出 NullReferenceException

转载 作者:行者123 更新时间:2023-12-01 18:26:59 24 4
gpt4 key购买 nike

此问题似乎与 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是如何抛出空引用异常的?这是一个异常(exception)情况,还是我在程序中做了一些本质上错误的事情?接下来,我应该测试什么来阻止这个异常抛出?

15:51:57,288 [13] ERROR ASP.global_asax - System.NullReferenceException: Object reference not set to an instance of an object. at System.Web.Security.FormsAuthentication.SignOut() at MvcApplication.Session_End

谢谢

最佳答案

重要的是要认识到 Session_End 不一定在 HTTP 请求的上下文中执行。当 session 超时时它可能会运行。那时您无法向客户端发送任何内容,因为它已经不存在了!

因此,您不应尝试删除 Session_End 中的表单例份验证 Cookie。如果您愿意,您应该在单击应用程序中某处的“注销”按钮时尽快执行此操作。如果您需要用户的表单例份验证票证在发生超时后过期,您只需在配置文件中适当设置 cookie 过期时间(可能相当于 session 超时值)即可。

关于c# - FormsAuthentication.SignOut 抛出 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com