Строка запроса
(Ниже приводится текст связанного раздела статьи в Википедии.)
Состав
Типичный URL-адрес, содержащий строку запроса, выглядит следующим образом:
http://server/path/program?query_string
Когда сервер получает запрос на такую страницу, он запускает программу (если она настроена для этого), передавая программе query_string без изменений. Знак вопроса используется как разделитель и не является частью строки запроса.
Ссылка на веб-странице может иметь URL-адрес, содержащий строку запроса, однако HTML определяет три способа, которыми веб-браузер может генерировать строку запроса:
- веб-форма через элемент ...
- карта изображения на стороне сервера через атрибут ismap в элементе с конструкцией
- индексированный поиск через теперь устаревший элемент
Веб-формы
Основное использование строк запроса - содержать содержимое HTML-формы, также известной как веб-форма. В частности, когда отправляется форма, содержащая поля field1, field2, field3, содержимое полей кодируется как строка запроса следующим образом:
field1=value1&field2=value2&field3=value3...
- Строка запроса состоит из серии пар "поле-значение".
- В каждой паре имя поля и значение разделяются знаком равенства. Знак равенства может быть опущен, если значение является пустой строкой.
- Серии пар разделяются амперсандом, '&' (или точкой с запятой, ';' для URL-адресов, встроенных в HTML и не созданных с помощью ...; см. Ниже). Хотя окончательного стандарта не существует, большинство веб-фреймворков позволяют связывать несколько значений с одним полем:
field1=value1&field1=value2&field1=value3...
Для каждого поля формы строка запроса содержит пару поле = значение. Веб-формы могут включать поля, которые не видны пользователю; эти поля включаются в строку запроса при отправке формы
Это соглашение является рекомендацией W3C. W3C рекомендует, чтобы все веб-серверы поддерживали разделители точки с запятой в дополнение к разделителям амперсанд [6], чтобы разрешить строки запроса с кодом application / x-www-form-urlencoded в URL-адресах в документах HTML без необходимости экранирования амперсандов сущностями.
Технически, содержимое формы кодируется как строка запроса только в том случае, если метод отправки формы - GET. Такая же кодировка используется по умолчанию, когда метод отправки - POST, но результат не отправляется в виде строки запроса, то есть не добавляется к URL-адресу действия формы. Скорее, строка отправляется как тело HTTP-запроса.
Я использую AbsoluteUri, и вы можете получить его так:
string myURI = Request.Url.AbsoluteUri; if (!WebSecurity.IsAuthenticated) { Response.Redirect("~/Login?returnUrl=" + Request.Url.AbsoluteUri );
Затем после входа в систему:
var returnUrl = Request.QueryString["returnUrl"]; if(WebSecurity.Login(username,password,true)){ Context.RedirectLocal(returnUrl);
У меня это хорошо работает.
источник