Asp.net 查询字符串不接受&;amp;-需要

Asp.net 查询字符串不接受&;amp;-需要,asp.net,.net,vb.net,request.querystring,Asp.net,.net,Vb.net,Request.querystring,我需要能够在.Net代码中处理HTML编码的符号和 所以Url是 http://myite.com/index.aspx?language=en&Refresh=true 没有办法改变它,因为它是由其他东西生成的,所以这是我无法控制的 如何读取刷新参数 我试过了 HttpUtility.UrlDecode(Request.QueryString("Refresh")) 但是我的Request.QueryString(“Refresh”)实际上是空的,所以这是毫无意义的,就像

我需要能够在.Net代码中处理HTML编码的符号和

所以Url是

http://myite.com/index.aspx?language=en&Refresh=true
没有办法改变它,因为它是由其他东西生成的,所以这是我无法控制的

如何读取刷新参数

我试过了

HttpUtility.UrlDecode(Request.QueryString("Refresh")) 
但是我的Request.QueryString(“Refresh”)实际上是空的,所以这是毫无意义的,就像Uri.EscapeDataString一样


这可能不是第一次发生这种情况,但我正在努力寻找解决方案,正如大多数人会说的那样,使用Url编码,但正如我所说,Url超出了我的控制范围

查询字符串中的
&
应该是
%26

因为您无法更正url

您可以将刷新值读取为:

Request.QueryString("amp;Refresh");
请注意,您正在使用的服务的开发人员将来可能会纠正这一点。 如果已经准备好了,那就太好了

var refresh = Request.QueryString("amp;Refresh");
if(String.IsNullOrEmpty(refresh))
    refresh = Request.QueryString("Refresh");

Nunesspascal的回答基本上解决了你的问题。有一些替代方法

如果保证刷新参数是QueryString集合中的第二个键,那么可以使用
Request.QueryString(1)

另一种方法是对QueryStringCollection执行
Contains

If Request.QueryString IsNot Nothing AndAlso Request.QueryString.AllKeys.Count() > 0 Then
    Dim refreshKey = Request.QueryString.AllKeys.FirstOrDefault(Function(nv) nv.Contains("Refresh"))
    If refreshKey IsNot Nothing Then
        Dim refreshValue = Request.QueryString(refreshKey)
    End If
End If

太简单了!我不知道为什么我没有想到它我不认为%26是他的例子的正确解决方案,它将允许您将“&”符号编码到参数值中,也就是说,您可以通过执行“?name=bob%26jill”来获得一个参数,例如“?name=bob&jill”。url首先应该有一个分隔参数的“&”符号。不过,使用“amp;Refresh”对他来说是一个很好的解决方案!