10

正如 其他地方所建议的那样,我在我的自定义错误配置中使用了 redirectMode = ResponseRewrite,因此我的自定义错误页面可以访问异常信息。一段时间以来,这就像一种魅力。

在添加更多“帮助用户从错误中恢复”类型的功能时,我们需要一条之前存储在 Session 中的信息。在实现这一点时,我发现当redirectMode=ResponseRewrite 时,Session 的各种途径都以null 结束,但是当redirectMode=ResponseRedirect(或未定义)时它们都被填充。

有谁知道为什么?我们不得不在异常信息(ResponseRewrite)或会话(ResponseRedirect)之间做出选择,这似乎很奇怪。

关于富自定义错误处理的MSDN 文章告诉我,只有当控制传递方法是 Server.Transfer 时,Session 才可用,我假设 ResponseRewrite 在后台使用。显然情况并非如此。

4

1 回答 1

5

我还不知道这个问题的答案,但为了解决这个问题,我将 redirectMode 属性从我的 Web 配置中取出,并将自定义逻辑放入 Global.asaxApplication_Error处理程序中以执行我想要的操作。我用“用户友好”消息异常替换异常,但本质上传输逻辑是:

if(Context.IsCustomErrorEnabled)
{
Server.Transfer("~/Error.aspx");
}

然后 Error.aspx 页面具有 Page_Load 代码以将错误拉出上下文并显示消息。

于 2009-11-09T14:43:22.023 回答