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

问题描述 投票:2回答:1

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

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

c# url uri standards-compliance
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.