0

我有网址:

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 转换为字符 '/'?

4

3 回答 3

1

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

百分比编码 是自动发生的。

于 2013-04-18T13:20:19.737 回答
1

两者是 100% 等价的。

%2f实际上,只有在路径中使用字符“/”时才需要对它进行编码(在&&符号之前)。在&符号之后使用&(在查询字符串中)没有歧义,因此可以以非转义格式使用。该Uri课程很聪明并且知道这一点,因此删除了您在原始网址中应用的不必要的转义。

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

于 2013-04-18T13:24:41.470 回答
0

这似乎已经过时了:

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

请参阅有关它的文档

编辑 :

如果您仍然需要访问传递给构造函数的完整字符串并避免自动转换,则可以使用属性Uri.OriginalString它将准确返回您提供给构造函数的内容。

于 2013-08-21T21:20:54.627 回答