2012-04-10 4 views
1

In meiner Anwendung zeigt i Code unten schrieb für 404.404 Redirect-Header 302

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 

Aber wenn ich versuche, über Programm ausführen ich erhalte Context.CurrentHandler null Ausnahme. Wenn ich Response.Redirect an Stelle von Server.Transfer halte, bekomme ich 301 Header. Ich habe http://404checker.com/full-header-checker für Header-Kontrolle

Antwort

1

Nicht sicher verwendet, was Sie aber ein Response.Redirect zu tun versuchen, ist ein 302:

HTTP/1.1 302 Object moved 

Ihre Context.CurrentHandler Check vor dem Server.Transfer ist, so dass hat nichts mit Ihrer Null-Ausnahme zu tun.

+0

Wenn ich http://404checker.com/full-header-checker mit nicht existierender Seite einchecke, zeigt die Kopfzeile HTTP/1.1 302 Object verschoben statt HTTP/1.1 404 Not Found – Sree