2014-01-27 64 views
-2

当用户遇到特定类型的错误时,在Global.asax上,我们更新会话变量IsErrorEncountered,保存会话并将用户重定向回仪表板页面。在仪表板页面上,当我尝试访问此会话变量时,它不反映我在Global.asax中所做的更改。为什么会议不被保存?有人可以告诉我,我是否甚至可以从Global.asax更新我的会话?在Global.asax中保存会话

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 

    Dim session As SessionData = HttpContext.Current.Session("SessionData") 
    sessionData.IsErrorEncountered = True 
    HttpContext.Current.Session.Add("SessionData", session) 

    HttpContext.Current.Response.Redirect("~/Dashboard/Index") 

End Sub 
+0

而你的问题是...请编辑。 –

+0

*此代码位于Global.asax。*中。不。不是。 –

+0

对不起,我猜我输入得太快 – Neel

回答

0

这可能是您的会话令牌cookie在重定向时正在丢失。尝试使用Response.Redirect方法的重载版本:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 

    Dim session As SessionData = HttpContext.Current.Session("SessionData") 
    sessionData.IsErrorEncountered = True 
    HttpContext.Current.Session("SessionData") = session 

    HttpContext.Current.Response.Redirect("~/Dashboard/Index", false) 
    HttpContext.Server.ClearError(); 
End Sub 
+0

如果Session.Add()发现密钥“SessionData”,它也更新会话。我确实尝试了您的解决方案,但无法正常工作。 – Neel

+0

我已经更新了我的答案,该答案适用于您的解决方案 –

+0

试过解决方案。没有工作! – Neel