微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

会话变量在 response.redirect 上消失,该键不在视图中

如何解决会话变量在 response.redirect 上消失,该键不在视图中

尝试在使用 C# 中的 .Net 4.7.2 的 MVC 5.2.7 网站中进行一些全局错误处理。

Global.asax 中的这个方法在出现错误调用正常;通过尝试访问不存在的页面来测试它。

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Error(object sender,EventArgs e)
    {
        Exception ex = this.Server.GetLastError();

        Utility.LoggingUtility.LogAndEmailException(this.Response,this.Session,ex,this.Request);
    }
}
public static class LoggingUtility
{
    public static void LogAndEmailException(HttpResponse response,HttpSessionState session,Exception ex,HttpRequest request = null)
    {
        Utility.ErrorPageUtility.SetErrorPageMessage(ex,session,ex.Message);

        response.Redirect("~/Error",false);
    }
}
public static class ErrorPageUtility
{
    public static void SetErrorPageMessage(Exception ex,string message)
    {
        session["ErrorTypeMessage"] = message;
    }
}

当我在错误视图中尝试 this.Session["ErrorTypeMessage"] 时出现问题,即它始终为空。会话未更改(会话 ID 与设置时相同)但密钥已“消失”。

会话是认的......即使用 cookie 的 InProc。

附言令人讨厌的是它在不同的项目中运行良好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。