Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查找除某些查询字符串之外的匹配URL?_C#_Asp.net_.net 3.5 - Fatal编程技术网

C# 如何查找除某些查询字符串之外的匹配URL?

C# 如何查找除某些查询字符串之外的匹配URL?,c#,asp.net,.net-3.5,C#,Asp.net,.net 3.5,我使用HTTP资源的URL作为资源的唯一标识符(惊喜) 这些都是不同的: http://localhost/Docs/SomeDocument?group=33&checksafety=true http://localhost/Docs/SomeDocument?group=11&checksafety=true http://localhost/Docs/SomeDocument?group=11&checksafety=false 但是,我有第三个查询参数,它不应

我使用HTTP资源的URL作为资源的唯一标识符(惊喜)

这些都是不同的:

http://localhost/Docs/SomeDocument?group=33&checksafety=true
http://localhost/Docs/SomeDocument?group=11&checksafety=true
http://localhost/Docs/SomeDocument?group=11&checksafety=false
但是,我有第三个查询参数,它不应该区分资源(在服务器端,它从数据库中提取相同的数据)

这些参数相同(group和checksafety参数相同):

正则表达式在这里合适吗

有更好的办法吗


我使用的是C#、.NET 3.5和ASP.NET。

您可以拆分以获得查询字符串,然后拆分以获得每个组,查看是否所有组都具有相同的组数(组的意思是“变量=值”)。对每组进行单独分析,排除那些不在乎的

这样,就更容易分析了。这里有一些想法

  • 将每个组放入一个列表并对其排序(然后迭代以查看它们是否相同)
  • 将每组放入一个集合中,分别检查并集是否等于一个集合
  • 使用Uri和UriBuilder执行此过程,并在删除“无关”组后将其用于匹配验证

--编辑包含Nick Berardi的建议

我同意您关于拆分它的意见。但我会将其放入System.Uri中,然后使用UriBuilder创建Uri。然后您可以轻松地使用QueryString属性,按“&”拆分删除您不喜欢的变量,然后重新构建。我特别提到UriBuilder的唯一原因是,您不必自己尝试重新构建字符串。使用不同的词也是一样的吗……我的大脑在这里超时工作:1)通过拆分和删除不需要的“组”,重写每个URL上的查询字符串然后按字母顺序重新添加组,然后比较URL字符串的小写版本?这也可以。但是你不一定需要对它进行排序(如果你使用Set),它们是不同的吗?@samuelcarrijo-不,它们是相同的。
http://localhost/Docs/SomeDocument?group=11&checksafety=false&rendergroup=A
http://localhost/Docs/SomeDocument?group=11&checksafety=false&rendergroup=B
http://localhost/Docs/SomeDocument?rendergroup=C&group=11&checksafety=false