質問

私は私のglobal.asx

ののApplication_ErrorサブにHttpExceptionsを探します
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

        Dim ex As Exception = HttpContext.Current.Server.GetLastError()

        If ex IsNot Nothing Then
            If TypeOf (ex) Is HttpUnhandledException Then
                If ex.InnerException Is Nothing Then
                    Server.Transfer("error.aspx", False)
                End If
                ex = ex.InnerException
            End If

            If TypeOf (ex) Is HttpException Then
                Dim httpCode As Integer = CType(ex, HttpException).GetHttpCode()
                If httpCode = 404 Then
                    Server.ClearError()
                    Server.Transfer("error_404.aspx", False)
                End If
            End If
        End If
End Sub

私はこのコードと確認をステップ実行することができ、それは、Server.Transferを(「error_404.aspx」)を打つだけでなく、error_404.aspxのをPage_Loadが、それは示して、すべては空白のページですん。

役に立ちましたか?

解決

あなたは応答バッファをクリアしていますか?あなたはのApplication_Errorキャッチオールでこれをやっているので、すでにそこにあるもの見当もつかない。 Server.Transferのは、ちょうど新しいページを既存の応答に発生どんな追加されます。これは明らかにいくつかの問題を作成することができます。

他のヒント

あなたはServer.TransferResponse.Redirectを変更する場合は、

それは動作しますか? (あなたはGlobal.asaxの中でどこからHTTPContext.Current接頭辞を使用する必要があります。)

私は必ず効果的にブラウザにGlobal.asaxのURLをレンダリングするためにIISを求めているので、Server.Transferのは、何をやっているの文脈では良い考えであることはないよ。

私はいくつかのエラーが発生した場合、Server.Transferを火ではないだろうと思います。

Server.Transferののは、このための良い方法ではありません。 のResponse.Redirect にしてみてください。それは動作するはずです。

あなたが任意の例外を持っている状態を維持するためにどのような要件がある場合は?ない場合は、Response.Redirectと行くます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top