gpt4 book ai didi

c# - ResponseRewrite 后 session 为空

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:33 25 4
gpt4 key购买 nike

我正在使用 web.config 中的自定义错误属性来处理自定义错误

像这样:

<customErrors mode="On" defaultRedirect="~/Error.aspx" redirectMode="ResponseRewrite" />

抛出错误后,页面被重定向到错误页面,但是当我访问错误页面中的session时,它是null。

我使用 ResponseRewrite 而不是 ResponseRedirect 的原因是因为我使用 elmah 通过 Items 传递了 Exception id

我什至尝试创建新的空 asp.net 网站,但它仍然发生。

我见过一些类似的问题,但没有答案。

最佳答案

我重现了这个问题,但我不明白为什么会这样。在 Application_Error 处理程序中,我可以访问 Session 变量,但是当页面加载时它变为 null

我找到了解决方法 here这解决了问题。您需要从 web.config 中删除 redirectMode,并在遇到错误时手动执行 Server.Transfer。所以这是 web.config:

<customErrors mode="On" defaultRedirect="~/Error.aspx"/>

并将其添加到 Global.asax.cs 文件中:

void Application_Error(object sender, EventArgs e)
{
if(Context.IsCustomErrorEnabled)
{
Server.Transfer("~/Error.aspx");
}
}

要根据错误指定不同的错误页面,您可以像这样访问错误代码:

HttpException httpException = (HttpException) Server.GetLastError();
int httpCode = httpException.GetHttpCode();
switch (httpCode)
{
case 500: Server.Transfer("~/Pages/Error.aspx");break;
case 404: Server.Transfer("~/Pages/PageNotFound.aspx");break;
default: Server.Transfer("~/Pages/Error.aspx");break;
}

关于c# - ResponseRewrite 后 session 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com