HttpResponse.Redirect メソッド

定義

クライアントを新しい URL にリダイレクトします。

オーバーロード

Redirect(String)

新しい URL に要求をリダイレクトして、新しい URL を指定します。

Redirect(String, Boolean)

クライアントを新しい URL にリダイレクトします。 新しい URL を指定し、さらに現在のページの実行を終了するかどうかを指定します。

Redirect(String)

新しい URL に要求をリダイレクトして、新しい URL を指定します。

public:
 void Redirect(System::String ^ url);
public void Redirect (string url);
member this.Redirect : string -> unit
Public Sub Redirect (url As String)

パラメーター

url
String

対象となる位置。 アプリケーションの相対仮想パスを指定できます。

例外

HTTP ヘッダーが送信された後にリダイレクトしようとしました。

次の例では、別の Web サイトへの無条件リダイレクトを強制します。

Response.Redirect("http://www.microsoft.com/gohere/look.htm");

Response.Redirect("http://www.microsoft.com/gohere/look.htm")
   

注釈

の呼び出しRedirectは、2 番目のパラメーターを に設定して を呼び出すことRedirecttrueと同じです。

Redirect が呼び出 End され、完了時に例外が ThreadAbortException スローされます。 この例外は、Web アプリケーションのパフォーマンスに悪影響を与えます。 したがって、このオーバーロードの代わりに、 オーバーロードを使用し、 パラメーターに HttpResponse.Redirect(String, Boolean)endResponsefalseしてから、 メソッドをCompleteRequest呼び出することをお勧めします。 詳細については、End メソッドを参照してください。

注意

モバイル ページの場合のみ、アプリケーションが Cookie レス セッションに依存している場合、または Cookie レス セッションを必要とするモバイル デバイスから要求を受信する可能性がある場合は、パスにチルダ (~) を使用すると、新しいセッションが作成され、セッション データが失われる可能性があります。 "~/path" などのパスを持つモバイル コントロールのプロパティを設定するには、プロパティに割り当てる前に"~/path" を使用して ResolveUrl パスを解決します。

ASP.NET は、302 HTTP 状態コードを返すことによってリダイレクトを実行します。 別のページに制御を転送する別の方法は、 Transfer メソッドです。 メソッドは Transfer 通常、クライアントへのラウンド トリップを引き起こさないため、より効率的です。 詳細については、「 方法: ユーザーを別のページにリダイレクトする」を参照してください。

適用対象

Redirect(String, Boolean)

クライアントを新しい URL にリダイレクトします。 新しい URL を指定し、さらに現在のページの実行を終了するかどうかを指定します。

public:
 void Redirect(System::String ^ url, bool endResponse);
public void Redirect (string url, bool endResponse);
member this.Redirect : string * bool -> unit
Public Sub Redirect (url As String, endResponse As Boolean)

パラメーター

url
String

リダイレクト先の場所。

endResponse
Boolean

現在のページの実行を終了するかどうかを示します。

例外

urlnullです。

url に改行文字が含まれています。

HTTP ヘッダーが送信された後にリダイレクトしようとしました。

ページ要求がコールバックの結果となっています。

次の例では、 プロパティをIsClientConnected使用して、ページを要求しているクライアントがサーバーに接続されたままであるかどうかをチェックします。 が true の場合 IsClientConnected 、コードは メソッドを Redirect 呼び出し、クライアントは別のページを表示します。 が false の場合 IsClientConnected 、コードは メソッドを End 呼び出し、すべてのページ処理が終了します。

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Check whether the browser remains
        // connected to the server.
        if (Response.IsClientConnected)
        {
            // If still connected, redirect
            // to another page. 
            Response.Redirect("Page2CS.aspx", false);
        }
        else
        {
            // If the browser is not connected
            // stop all response processing.
            Response.End();
        }
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Private Sub Page_Load(sender As Object, e As EventArgs)

        ' Check whether the browser remains
        ' connected to the server.
        If (Response.IsClientConnected) Then

            ' If still connected, redirect
            ' to another page.             
            Response.Redirect("Page2VB.aspx", false)
        Else
            ' If the browser is not connected
            ' stop all response processing.
            Response.End()
        End If
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

注釈

絶対 URL (たとえば、 http://www.contoso.com/default.aspxなど) または相対 URL (たとえば、Default.aspx) をターゲットの場所に指定できますが、一部のブラウザーでは相対 URL が拒否される場合があります。

ページ ハンドラーでこのメソッドを使用して 1 つのページの要求を終了し、別のページの新しい要求を開始する場合は、 を にfalse設定endResponseし、 メソッドをCompleteRequest呼び出します。 パラメーターに を指定trueした場合、このメソッドは元の要求の End メソッドを呼び出します。このメソッドは、完了時に例外をThreadAbortExceptionスローendResponseします。 この例外は Web アプリケーションのパフォーマンスに悪影響を及ぼすため、 パラメーターの endResponse を渡falseすことをお勧めします。 詳細については、End メソッドを参照してください。

注意

モバイル ページの場合、アプリケーションが Cookie レス セッションに依存している場合、または Cookie レス セッションを必要とするモバイル デバイスから要求を受信する可能性がある場合は、パスにチルダ (~) を使用すると、新しいセッションが作成され、セッション データが失われる可能性があります。 "~/path" などのパスを持つモバイル コントロールのプロパティを設定するには、プロパティに割り当てる前に"~/path" を使用して ResolveUrl パスを解決します。

ASP.NET は、302 HTTP 状態コードを返すことによってリダイレクトを実行します。 別のページに制御を転送する別の方法は、 Transfer メソッドです。 メソッドは Transfer 通常、クライアントへのラウンド トリップを引き起こさないため、より効率的です。 詳細については、「 方法: ユーザーを別のページにリダイレクトする」を参照してください。

適用対象