Domanda

Vorrei eseguire un redirect telaio in C # dal mio modulo gestito per l'IIS 7.
Quando chiamo pagina context.Response.Redirect(@"http://www.myRedirect.org");the corretta è indicata, ma anche l'indirizzo viene visualizzato nel browser. E questo è esattamente quello che non voglio.
Quindi voglio qualcosa di simile:

private void OnBeginRequest(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    HttpContext context = app.Context;

    // make a frame redirect if a specified page is called
    if (context.Request.ServerVariable["HTTP_REFERER"].Equals(@"http://www.myPage.org/1.html"))
    {
        // perform the frame redirect here, but how?
        // so something like
        context.Response.Redirect(@"http://www.myRedirect.org");
        // but as I said that doesn't redirect as I want it to be
    }
}

Tutte le idee su che?
Modifica Ho provato l'esempio, in modo da avere:

private void OnBeginRequest(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    HttpContext context = app.Context;

    // make a frame redirect if a specified page is called
    if (context.Request.ServerVariable["HTTP_REFERER"].Equals(@"http://www.myPage.org/1.html"))
    {
        // perform the frame redirect here, but how?
        context.Response.Write(@"<html>");
        context.Response.Write(@"<head>");
        context.Response.Write(@"</head>");
        context.Response.Write(@"<frameset rows=""100%,*"" framespacing=""0"" frameborder=""NO"" border=""0"">");
        context.Response.Write(@"<frame src=""http://www.myRedirect.org"" scrolling=""auto"">");
        context.Response.Write(@"</frameset>");
        context.Response.Write(@"<noframes>");
        context.Response.Write(@"<body>Some text...");
        context.Response.Write(@"</body>");
        context.Response.Write(@"</noframes>");
        context.Response.Write(@"</html>");
    }
}

Ma che, inoltre, non reindirizzamento in modo corretto. Ho ancora l'indirizzo reindirizzamento mostrato nel mio browser. Quindi qualsiasi altra idea?
EDIT: Io, ovviamente, fatto un errore. Il codice precedente funziona e fa quello che voglio. E 'un primo momento non ha funzionato perché il mio reindirizzamento URL stava facendo qualcosa di inaspettato.

È stato utile?

Soluzione

Per eseguire un reindirizzamento cornice è necessario inviare di nuovo il codice HTML contenente un frame da un unico telaio, con il suo insieme di sorgente http://www.myRedirect.org . Per quanto riguarda il server e il browser è interessato nessun redirect è accaduto -. È appena ricevuto un po 'di codice HTML

L'esecuzione di una Response.Redirect sarà, come hai potuto notare, sì che il browser per fare una nuova richiesta fresca alla nuova pagina, che mostra all'utente il nuovo indirizzo nella barra del titolo. E 'in genere utilizzato per quando una pagina cambia in realtà il suo indirizzo, ma i proprietari non vuole rinunciare è raggiungibile da l'URL originale pure.

Modifica : HTML di esempio cornice di reindirizzamento: http: // it .wikipedia.org / wiki / URL_redirection # Frame_redirects

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top