Request.QueryString和Request.ServerVariables [“QUERY_STRING”]之间有什么区别

时间:2013-05-23 13:53:24

标签: c# asp.net .net

我只想从网址获取完整的查询字符串。

Request.QueryString 

Request.ServerVariables["QUERY_STRING"]

我可以使用其中任何一种吗? 哪种方式更受欢迎?

由于

3 个答案:

答案 0 :(得分:6)

Request.ServerVariables["QUERY_STRING"]包含整个查询字符串,即问号之后但片段标识符#

之前的所有字符串

http://msdn.microsoft.com/en-us/library/ms525396(v=vs.90).aspx

Request.QueryString包含一个允许您获取单个元素的集合。 使用以下语法:

Request.QueryString(variable)[(index)|.Count]

此集合是从ServerVariables集合生成的。此集合中的值是自动UrlDecoded。

因此,如果您致电Request.QueryString.ToString(),则其与Request.ServerVariables["QUERY_STRING"]本身相同,但使用UrlDecoding。 所以你应该使用它,因为它更安全。

Request.QueryString(variable)[(index)|.Count]

http://msdn.microsoft.com/en-us/library/ms524784(v=vs.90).aspx

答案 1 :(得分:1)

http://msdn.microsoft.com/en-us/library/ms524784(v=vs.90).aspx

QueryString集合是ServerVariables集合中QUERY_STRING变量的已解析版本。它使您可以按名称检索QUERY_STRING变量。 Request.QueryString(parameter)的值是QUERY_STRING中出现的所有参数值的数组。您可以通过调用Request.QueryString(parameter).Count来确定参数的值的数量。如果变量没有与之关联的多个数据集,则计数为1.如果未找到变量,则计数为0.

要在多个数据集之一中引用QueryString变量,请为index指定值。 index参数可以是1和Request.QueryString(variable).Count之间的任何值。如果引用多个QueryString变量之一而未指定index的值,则数据将以逗号分隔的字符串形式返回。

当您使用Request.QueryString参数时,服务器会解析发送给请求的参数并返回指定的数据。如果您的应用程序需要未解析的QueryString数据,您可以通过调用Request.QueryString而不使用任何参数来检索它。

答案 2 :(得分:0)

如果您调用Request.QueryString [“Whatever”],则会自动执行UrlDecode。见does Request.Querystring automatically url decode a string?。所以要小心你的空格,%20,&符号等。

此致 迈克尔