Request.URL将查询字符串参数加倍?

时间:2014-02-17 19:39:03

标签: asp.net .net-4.0 webforms asp.net-4.0 formsauthentication

我请求这样的网址:

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 

在login.aspx的PageLoad事件中,我尝试以两种方式检查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 个答案:

答案 0 :(得分:1)

这是通过设计完成的,因此您可以在登录期间访问这些查询字符串参数。还必须保留这些参数以便在登录后重定向 - 因此它们也是url编码的。有关更详细的说明,请参阅Anatomy of Forms Authentication ReturnUrl