2013-05-06 39 views
2

后,我现在用的是自定义错误在web.config属性来处理自定义错误会话是空ResponseRewrite

像这样:

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

引发错误后,页面被重定向到错误页面,但是当我访问错误页面中的会话时,它是空的。

我使用ResponseRewrite而不是ResponseRedirect的原因是因为我通过使用elmah的项目通过Exception id

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

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

+0

你可以添加代码或更多的细节?我没有在Visual Studio 2012,IIS 8中重现错误。 – nmat 2013-05-26 16:00:15

+0

我正在使用visual studio 2010,iis6 – Amir 2013-05-27 07:08:14

回答

2

我转载了这个问题,但我不明白为什么会发生这种情况。在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;  
} 
+0

好吧我确实设法使用您的建议使其正常工作,但是您是否知道如何从默认重定向基于我所在页面的网页配置? – Amir 2013-05-29 08:43:57

+0

@Amir你想为每个页面使用不同的重定向,还是只想知道如何从web.config中读取'defaultRedirect'属性? – nmat 2013-05-29 09:36:20

+0

我知道如何阅读默认的重定向,但是当我想使用不同的重定向时会发生什么? – Amir 2013-05-29 10:49:44