Global.asax错误处理:server.transfer的怪癖

时间:2010-09-01 17:16:52

标签: asp.net http-status-code-404 global-asax

在我的global.asax中,我正在检查404,并按照以下内容转移到404错误页面:

    If HTTPExceptionInstance.GetHttpCode = 404 Then

        Server.ClearError()

        Response.TrySkipIisCustomErrors = True
        Response.Status = "404 Not Found"

        Server.Transfer("~/Invalid-Page.aspx")

    End If

问题是,我的Invalid-page.aspx使用了一些会话代码(会话(“somevariable”)),这会引发异常“会话状态只能在enableSessionState为时使用在配置文件或Page指令中设置为true。“因为我使用的是server.transfer(我相信这是一个已知问题?)。

如果我使用Response.Redirect,则会出现问题。但是,这意味着错误页面的标题是200,而不是404.

对此最好的解决方法是什么?

2 个答案:

答案 0 :(得分:3)

奇怪! Server.TransferRequest完全符合我的要求而不会丢失会话状态!

答案 1 :(得分:0)

检查Invalid.aspx的页面指令中的EnableSessionState是否设置为true