Запрос.URL удваивает параметры строки запроса?


Я запрашиваю такой URL:

http://mylocalsite/virtual/page.aspx?var1=1&var2=2&var3=3

Я использую FormsAuthentication и не прошел проверку подлинности, поэтому я перенаправлен. Вот что показывает строка расположения браузера:

http://mylocalsite/virtual/login.aspx?ReturnUrl=/virtual/page.aspx?var1=1&var2=2&var3=3 

В событии pageload входа в систему.aspx я пытаюсь проверить URL двумя способами:

Dim example1 as String = Request.Url

Dim example2 as String = Request.Url.Scheme & "://" & Request.Url.Authority & Request.RawUrl

Вот что я получаю:

' Example 1
http://mylocalsite/virtual/login.aspx?ReturnUrl=/virtual/page.aspx?var1=1&var2=2&var3=3&var1=1&var2=2&var3=3

' Example 2 - is URLEncoded
http://mylocalsite/virtual/login.aspx?ReturnUrl=%2fvirtual%2fpage.aspx%3fvar1%3d1%26var2%3d2%26var3%3d3%26var1%3d1%26var2%3d2%26var3%3d3

Почему моя строка запроса удваивается в обоих этих примерах?

1 2

1 ответ:

Это сделано специально, чтобы у вас был доступ к этим параметрам строки запроса во время входа в систему. Эти параметры также должны быть сохранены для перенаправления после входа в систему - таким образом, они также кодируются url. Смотритеанатомию формы Authentication ReturnUrl для более подробного объяснения.