Application_ErrorでServer.Transferを(「error_404.aspx」)は、空白のページを返します。
-
22-09-2019 - |
質問
私は私の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.Transfer
にResponse.Redirect
を変更する場合は、それは動作しますか? (あなたはGlobal.asaxの中でどこからHTTPContext.Current接頭辞を使用する必要があります。)
私は必ず効果的にブラウザにGlobal.asaxのURLをレンダリングするためにIISを求めているので、Server.Transferのは、何をやっているの文脈では良い考えであることはないよ。
私はいくつかのエラーが発生した場合、Server.Transferを火ではないだろうと思います。
Server.Transferののは、このための良い方法ではありません。 のResponse.Redirect にしてみてください。それは動作するはずです。
あなたが任意の例外を持っている状態を維持するためにどのような要件がある場合は?ない場合は、Response.Redirect
と行くます。
所属していません StackOverflow