. net Uri(字符串地址)错误

本文关键字:错误 地址 字符串 Uri net | 更新日期: 2023-09-27 18:10:03

我有URL:

http://localhost:8128/WCF8bcPgServices/EventService/Event/GETPLS/station=E2SKGR&secondstation=%2fE2SKGR

类Uri转换URL为:

http://localhost:8128/WCF8bcPgServices/EventService/Event/GETPLS/station=E2SKGR&secondstation=/E2SKGR

调用构造函数

new Uri("http://localhost:8128/WCF8bcPgServices/EventService/Event/GETPLS/station=E2SKGR&secondstation=%2fE2SKGR", true)

没有影响

为什么类Uri将%2f转换为字符'/'?

. net Uri(字符串地址)错误

两者100%等同。

实际上,只有在路径中使用字符'/'时才需要将其编码为%2f(在& &号之前)。在& &符号之后使用(在查询字符串中)没有歧义,因此可以以未转义的格式使用。Uri类很聪明,知道这一点,因此删除了在原始url中应用的不必要的转义。

您正在创建明显的错误行为,不转义url中的所有字符。或者您在原始url的某个地方省略了?字符,或者您需要对url中的保留字符进行编码以消除歧义。

%2f实际上表示'/'。在asciitable中,您可以看到,2f对应于'/'字符。

百分比编码是自动发生的

这似乎已经过时了:

构造函数已弃用。请使用新的Uri(字符串)。dontEscape参数已弃用,且始终为false。http://go.microsoft.com/fwlink/?linkid=14202

请参阅文档。

编辑:

如果仍然需要访问传递给构造函数的完整字符串并避免自动转换,则可以使用Uri属性。