【发布时间】:2010-12-08 01:19:54
【问题描述】:
正如elsewhere 所建议的那样,我在我的自定义错误配置中使用了redirectMode = ResponseRewrite,因此我的自定义错误页面可以访问异常信息。一段时间以来,这就像一种魅力。
在添加更多“帮助用户从错误中恢复”类型的功能时,我们需要一条之前存储在 Session 中的信息。在实现这一点时,我发现当redirectMode=ResponseRewrite时,Session的各种途径都以null结尾,但是当redirectMode=ResponseRedirect(或未定义)时它们都被填充。
有人知道为什么吗?我们必须在拥有异常信息 (ResponseRewrite) 或拥有 Session (ResponseRedirect) 之间做出选择,这似乎很奇怪。
富自定义错误处理中的MSDN article 告诉我,只有当控制传递方法是 Server.Transfer 时,Session 才可用,这就是我假设 ResponseRewrite 在后台使用的方法。显然不是这样的。
【问题讨论】:
-
+1 我遇到了完全相同的问题
-
Mauricio,我还不知道这个问题的答案,但为了解决这个问题,我将 redirectMode 属性从我的 Web 配置中取出,并将自定义逻辑放入 Global.asax Application_Error 处理程序中做我想做的。我用“用户友好”消息异常替换异常,但本质上传输逻辑是: if(Context.IsCustomErrorEnabled) { Server.Transfer("~/Error.aspx");然后 Error.aspx 页面有 Page_Load 代码将错误拉出上下文并显示消息。
-
@Josh,看起来不错,把它放在答案中,这样我就可以正确地投票了:-)
标签: asp.net exception-handling web-config custom-errors redirectmode