Query_string
(A seguir está o texto da seção vinculada da entrada da Wikipedia.)
Estrutura
Um URL típico contendo uma string de consulta é o seguinte:
http://server/path/program?query_string
Quando um servidor recebe uma solicitação para tal página, ele executa um programa (se configurado para fazer isso), passando a query_string inalterada para o programa. O ponto de interrogação é usado como separador e não faz parte da string de consulta.
Um link em uma página da web pode ter um URL que contém uma string de consulta; no entanto, o HTML define três maneiras como um navegador da web pode gerar a string de consulta:
- um formulário da web por meio do elemento ...
- um mapa de imagem do lado do servidor por meio do atributo ismap no elemento com uma construção
- uma pesquisa indexada por meio do elemento agora obsoleto
Formulários da web
O principal uso das strings de consulta é conter o conteúdo de um formulário HTML, também conhecido como formulário da web. Em particular, quando um formulário contendo os campos field1, field2, field3 é enviado, o conteúdo dos campos é codificado como uma string de consulta da seguinte maneira:
field1=value1&field2=value2&field3=value3...
- A string de consulta é composta por uma série de pares de valor de campo.
- Dentro de cada par, o nome do campo e o valor são separados por um sinal de igual. O sinal de igual pode ser omitido se o valor for uma string vazia.
- A série de pares é separada pelo "e" comercial, '&' (ou ponto e vírgula, ';' para URLs incorporados em HTML e não gerados por ...; veja abaixo). Embora não haja um padrão definitivo, a maioria das estruturas da web permite que vários valores sejam associados a um único campo:
field1=value1&field1=value2&field1=value3...
Para cada campo do formulário, a string de consulta contém um par campo = valor. Os formulários da Web podem incluir campos que não são visíveis ao usuário; esses campos são incluídos na string de consulta quando o formulário é enviado
Esta convenção é uma recomendação do W3C. O W3C recomenda que todos os servidores da web suportem separadores de ponto-e-vírgula além dos separadores de e comercial [6] para permitir strings de consulta codificadas por application / x-www-form-url em URLs dentro de documentos HTML sem a necessidade de definir "e" comercial de escape.
Tecnicamente, o conteúdo do formulário só é codificado como uma string de consulta quando o método de envio do formulário é GET. A mesma codificação é usada por padrão quando o método de envio é POST, mas o resultado não é enviado como uma string de consulta, ou seja, não é adicionado ao URL de ação do formulário. Em vez disso, a string é enviada como o corpo da solicitação HTTP.
Eu uso o AbsoluteUri e você pode obtê-lo assim:
string myURI = Request.Url.AbsoluteUri; if (!WebSecurity.IsAuthenticated) { Response.Redirect("~/Login?returnUrl=" + Request.Url.AbsoluteUri );
Depois de fazer login:
var returnUrl = Request.QueryString["returnUrl"]; if(WebSecurity.Login(username,password,true)){ Context.RedirectLocal(returnUrl);
Funciona bem para mim.
fonte