2

我请求这样的 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 

在 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

为什么我的查询字符串在这两个示例中都加倍?

4

1 回答 1

1

这是设计使然,因此您可以在登录期间访问这些查询字符串参数。这些参数也必须保留用于重定向登录后 - 所以它们也是 url 编码的。有关更详细的说明,请参阅表单身份验证 ReturnUrl 的剖析。

于 2014-02-26T03:43:08.117 回答