Query_string
(A continuación se muestra el texto de la sección vinculada de la entrada de Wikipedia).
Estructura
Una URL típica que contiene una cadena de consulta es la siguiente:
http://server/path/program?query_string
Cuando un servidor recibe una solicitud para dicha página, ejecuta un programa (si está configurado para hacerlo), pasando la query_string sin cambios al programa. El signo de interrogación se utiliza como separador y no forma parte de la cadena de consulta.
Un enlace en una página web puede tener una URL que contiene una cadena de consulta, sin embargo, HTML define tres formas en que un navegador web puede generar la cadena de consulta:
- un formulario web a través del elemento ...
- un mapa de imagen del lado del servidor a través del atributo ismap en el elemento con una construcción
- una búsqueda indexada a través del elemento ahora obsoleto
Formularios web
El uso principal de las cadenas de consulta es contener el contenido de un formulario HTML, también conocido como formulario web. En particular, cuando se envía un formulario que contiene los campos field1, field2, field3, el contenido de los campos se codifica como una cadena de consulta de la siguiente manera:
field1=value1&field2=value2&field3=value3...
- La cadena de consulta se compone de una serie de pares campo-valor.
- Dentro de cada par, el nombre y el valor del campo están separados por un signo igual. El signo igual puede omitirse si el valor es una cadena vacía.
- La serie de pares está separada por el signo comercial, '&' (o punto y coma, ';' para las URL incrustadas en HTML y no generadas por un ...; ver más abajo). Si bien no existe un estándar definitivo, la mayoría de los marcos web permiten asociar varios valores con un solo campo:
field1=value1&field1=value2&field1=value3...
Para cada campo del formulario, la cadena de consulta contiene un par campo = valor. Los formularios web pueden incluir campos que no son visibles para el usuario; estos campos se incluyen en la cadena de consulta cuando se envía el formulario
Esta convención es una recomendación del W3C. W3C recomienda que todos los servidores web admitan separadores de punto y coma además de los separadores de y comercial [6] para permitir cadenas de consulta con codificación de aplicación / x-www-form-urlencoded en URL dentro de documentos HTML sin tener que escapar de la entidad.
Técnicamente, el contenido del formulario solo se codifica como una cadena de consulta cuando el método de envío del formulario es GET. La misma codificación se usa de forma predeterminada cuando el método de envío es POST, pero el resultado no se envía como una cadena de consulta, es decir, no se agrega a la URL de acción del formulario. Más bien, la cadena se envía como el cuerpo de la solicitud HTTP.
Yo uso AbsoluteUri y puedes conseguirlo así:
string myURI = Request.Url.AbsoluteUri; if (!WebSecurity.IsAuthenticated) { Response.Redirect("~/Login?returnUrl=" + Request.Url.AbsoluteUri );
Luego, después de iniciar sesión:
var returnUrl = Request.QueryString["returnUrl"]; if(WebSecurity.Login(username,password,true)){ Context.RedirectLocal(returnUrl);
Funciona bien para mi
fuente