2014-02-17 82 views
2

我请求的URL是这样的:Request.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的事件中,我试图从网址两种方式:

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 

为什么我的查询字符串在这两个例子中翻倍?

+0

本地主机(Windows 7 SP1)或活动站点(Windows Server 2008 R2 SP1)和应用程序池= .NET v4.0上的IIS = 7.5.7600.16385集成管道 – wweicker

回答

1

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