HOME >> Tips >> Microsoft.NET >> ASP.NET

[ASP.NET] Response.Redirect("") を実行すると例外エラーが発生する

2014/04/02
文書番号:20168



開発環境   :Visual Studio 2010
フレームワーク:.NET Framework 4.0

ソースコードでResponse.Redirect("") を実行してページ遷移をしようとすると例外エラーが発生します。
Response.Redirect("") がソースの最後であれば問題にはならないかもしれませんが、この後にも処理がある場合には困ります。
そうでなくても気持ちのいいものではありませんが・・・


調べてみたところ、以下のナレッジが見つかりました。
http://support.microsoft.com/default.aspx?scid=kb;ja;312629

【処理手順】

    Response.Redirect("") の第2引数に「false」を指定するのが仕様のようです。
    
    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
    
        Try
    
            Response.Redirect("./About.aspx", False)
    
        Catch ex As Exception
            Label1.Text = ex.ToString
        End Try
    End Sub
    
    Server.Transfer("") も同様に第2引数に「false」を指定するといいようです。
    Server.Transfer("") では例外にキャッチされてしまいました。
    この場合、ThreadAbortExceptionが発生するのでこれを別にキャッチして処理するといいかもしれません。
    
    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
    
        Try
    
            Server.Transfer("./About.aspx", False)
    
        Catch ex As System.Threading.ThreadAbortException
            '別途例外処理
        Catch ex As Exception
            Label1.Text = ex.ToString
        End Try
    End Sub
    

【参考情報】

PRB: Response.End、アクセス、または Server.Transfer を使用する場合は、ThreadAbortException が発生します。
http://support.microsoft.com/default.aspx?scid=kb;ja;312629