.NET Uri类查询缺少分号保留字符,简单的解决方法?

时间:2010-12-01 01:07:51

标签: c# url uri standards-compliance

https://msdn.microsoft.com/en-us/library/system.uri.query.aspx和此https://ietf.org/rfc/rfc1738.txt表明.Net Uri类不会将分号识别为可在URL中表示查询的可接受字符。

这只需要一行左右的解决方法,但我喜欢我的代码干净。如果有一个解决方案允许我不在.Net集合的Uri类之外进行字符串解析,我宁愿这样做。是否有任何现有的.Net代码处理分号,以便将它们识别为URL中查询的一部分?

1 个答案:

答案 0 :(得分:1)

RFC 3986同意RFC 1738(它更新)将查询定义为问号(?)后面的部分,并声明分号可用于分隔参数 - 值对“适用到那个部分“。

在prospero URI中(RFC 1738中给出的唯一使用分号的情况)分号表示URI路径中的参数和参数值 - 而不是查询。

HTTP URI在查询中使用分号,但只能在?之后使用分号。 http://example.net/search?q=something;page=2。不幸的是,实际使用从未完全替换此函数的&字符,服务器端代码(包括ASP.NET)很难支持它,这限制了客户端代码采用它的能力(几乎没有浏览器)一样)。

仍然,在这种情况下,.NET Uri对象只能正确识别?后面的查询部分,包括分号(如果存在)。它的行为是正确的。