在我的应用程序中,我在下面编写了404代码。
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim exc As Exception
Dim readdInfo As New NameValueCollection
exc = Server.GetLastError()
Dim httpCode As Integer = CType(exc, HttpException).GetHttpCode()
If httpCode = 404 Then
If TypeOf Context.CurrentHandler Is System.Web.UI.Page Then
Context.Server.Transfer("404.aspx")
Context.Response.Flush()
Context.Response.End()
Else
Context.RewritePath("404.aspx")
Context.Response.Clear()
Context.Response.ClearContent()
Context.Response.ClearHeaders()
**Context.CurrentHandler.ProcessRequest(Context)**
Context.Response.Flush()
Context.Response.End()
End If
End If
End Sub
但是当我尝试运行上面的程序时,我得到 Context.CurrentHandler 是空例外。 如果我保持Response.Redirect代替Server.Transfer我得到301标题。 我已使用http://404checker.com/full-header-checker进行标题检查
答案 0 :(得分:1)
不确定您要做什么,但Response.Redirect是302:
HTTP/1.1 302 Object moved
您的Context.CurrentHandler检查在Server.Transfer之前,因此与您的null异常无关。