首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当redirectMode = ResponseRewrite时,为什么HttpContext.Session为空

当redirectMode = ResponseRewrite时,为什么HttpContext.Session为空
EN

Stack Overflow用户
提问于 2009-10-19 15:59:49
回答 1查看 2.9K关注 0票数 10

按照elsewhere的建议,我在自定义错误配置中使用了redirectMode = ResponseRewrite,这样我的自定义错误页面就可以访问异常信息。一段时间以来,这就像是一个护身符。

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

有人知道为什么吗?奇怪的是,我们必须在拥有异常信息(ResponseRewrite)和拥有会话(ResponseRedirect)之间做出选择。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-09 22:43:22

我还不知道这个问题的答案,但是为了解决这个问题,我从我的web配置中取出了redirectMode属性,并在Global.asax Application_Error处理程序中加入了自定义逻辑来完成我想做的事情。我用一个“用户友好的”消息异常替换了这个异常,但本质上传输逻辑是:

if(Context.IsCustomErrorEnabled)

{

Server.Transfer("~/Error.aspx");

}

然后,Error.aspx页面具有Page_Load代码,用于从上下文中提取错误并显示消息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1589566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档