Condividi tramite


HttpResponse.Redirect Metodo

Definizione

Reindirizza un client a un nuovo URL.

Overload

Redirect(String)

Reindirizza una richiesta a un nuovo URL e specifica il nuovo URL.

Redirect(String, Boolean)

Reindirizza un client a un nuovo URL. Specifica il nuovo URL e se l'esecuzione della pagina corrente deve terminare.

Redirect(String)

Reindirizza una richiesta a un nuovo URL e specifica il nuovo URL.

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

Parametri

url
String

Percorso di destinazione. Può trattarsi di un percorso virtuale relativo dell'applicazione.

Eccezioni

Viene tentato un reindirizzamento dopo l'invio delle intestazioni HTTP.

Esempio

Nell'esempio seguente viene eseguito il reindirizzamento incondizionato a un altro sito Web.

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

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

Commenti

La chiamata Redirect equivale a chiamare Redirect con il secondo parametro impostato su true.

Redirect chiama End che genera un'eccezione ThreadAbortException al completamento. Questa eccezione ha un effetto negativo sulle prestazioni dell'applicazione Web. Pertanto, è consigliabile usare l'overload HttpResponse.Redirect(String, Boolean) e passare false per il endResponse parametro anziché questo overload, quindi chiamare il CompleteRequest metodo . Per altre informazioni, vedere il metodo End.

Nota

Solo per le pagine per dispositivi mobili, se l'applicazione si basa su sessioni senza cookie o potrebbe ricevere richieste da dispositivi mobili che richiedono sessioni senza cookie, l'uso di una tilde (~) in un percorso può comportare la creazione di una nuova sessione e la potenziale perdita di dati di sessione. Per impostare una proprietà in un controllo mobile con un percorso come "~/path", risolvere il percorso usando ResolveUrl "~/path" prima di assegnarlo alla proprietà .

ASP.NET esegue il reindirizzamento restituendo un codice di stato HTTP 302. Un modo alternativo per trasferire il controllo in un'altra pagina è il Transfer metodo . Il Transfer metodo è in genere più efficiente perché non causa un round trip al client. Per altre informazioni, vedere Procedura: Reindirizzare gli utenti a un'altra pagina.

Si applica a

Redirect(String, Boolean)

Reindirizza un client a un nuovo URL. Specifica il nuovo URL e se l'esecuzione della pagina corrente deve terminare.

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)

Parametri

url
String

Posizione della destinazione.

endResponse
Boolean

Indica se l'esecuzione della pagina corrente deve terminare.

Eccezioni

url è null.

url contiene un carattere di nuova riga.

Viene tentato un reindirizzamento dopo l'invio delle intestazioni HTTP.

La richiesta della pagina è il risultato di un callback.

Esempio

Nell'esempio seguente viene utilizzata la IsClientConnected proprietà per verificare se il client che richiede la pagina rimane connesso al server. Se IsClientConnected è true, il codice chiama il Redirect metodo e il client visualizzerà un'altra pagina. Se IsClientConnected è false, il codice chiama il End metodo e l'elaborazione di tutte le pagine viene terminata.

<%@ 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>

Commenti

È possibile specificare un URL assoluto (ad esempio, http://www.contoso.com/default.aspx) o un URL relativo (ad esempio, Default.aspx) per il percorso di destinazione, ma alcuni browser possono rifiutare un URL relativo.

Quando si usa questo metodo in un gestore di pagine per terminare una richiesta per una pagina e avviare una nuova richiesta per un'altra pagina, impostare su endResponsefalse e quindi chiamare il CompleteRequest metodo . Se si specifica true per il endResponse parametro , questo metodo chiama il End metodo per la richiesta originale, che genera un'eccezione ThreadAbortException al termine. Questa eccezione ha un effetto negativo sulle prestazioni dell'applicazione Web, motivo per cui è consigliabile false passare il endResponse parametro . Per altre informazioni, vedere il metodo End.

Nota

Per le pagine per dispositivi mobili, se l'applicazione si basa su sessioni senza cookie o potrebbe ricevere richieste da dispositivi mobili che richiedono sessioni senza cookie, l'uso di una tilde (~) in un percorso può creare una nuova sessione e potenzialmente perdere i dati della sessione. Per impostare una proprietà in un controllo mobile con un percorso come "~/path", risolvere il percorso usando ResolveUrl "~/path" prima di assegnarlo alla proprietà .

ASP.NET esegue il reindirizzamento restituendo un codice di stato HTTP 302. Un modo alternativo per trasferire il controllo in un'altra pagina è il Transfer metodo . Il Transfer metodo è in genere più efficiente perché non causa un round trip al client. Per altre informazioni, vedere Procedura: Reindirizzare gli utenti a un'altra pagina.

Si applica a