Pergunta

Gostaria de executar um redirecionamento de quadros em C# do meu módulo gerenciado para o IIS 7.
Quando eu ligo context.Response.Redirect(@"http://www.myRedirect.org");A página correta é mostrada, mas também o endereço é mostrado no navegador. E é exatamente isso que eu não quero.
Então eu quero algo como:

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
    }
}

Alguma idéia sobre isso?
EDITAR:Eu tentei o exemplo, então eu tenho:

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>");
    }
}

Mas isso também não redireciona corretamente. Ainda tenho o endereço de redirecionamento mostrado no meu navegador. Então, alguma outra ideia?

EDIT: Eu obviamente cometi um erro. O código acima funciona e faz o que eu quero. Primeiro não funcionou porque meu URL de redirecionamento estava fazendo algo inesperado.

Foi útil?

Solução

Para executar um redirecionamento da estrutura Você precisa enviar de volta o código HTML contendo um quadro com um único quadro, com sua fonte definida para http://www.myredirect.org. No que diz respeito ao servidor e ao navegador, nenhum redirecionamento aconteceu - ele acabou de receber algum código HTML.

Realizando um Response.Redirect Como você observou, fará com que o navegador faça uma nova solicitação para a nova página, mostrando ao usuário o novo endereço na barra de título. Normalmente, é usado para quando uma página muda seu endereço, mas os proprietários ainda querem que ele seja acessível a partir do URL original também.

EDITAR: Amostra de redirecionamento de quadros HTML: http://en.wikipedia.org/wiki/url_redirection#frame_redirects

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top