当我用点段创建一个uri时:
var uri = new Uri("http://localhost/../../g");
uri类删除../
段,结果uri变为:
http://localhost/g
当点之前有路径时:
var uri = new Uri("http://localhost/a/b/c/./../../g");
// Result: http://localhost/a/g
看起来Uri
类正在关注the standart(第33页 - remove_dot_segments),但有没有办法保留点段而不是使用Uri类自动解析目标uri ?或者我需要自定义实现吗?
答案 0 :(得分:1)
如果您使用的是HTTP,那么如果您使用Uri类,它将始终转义它们。它逃脱了以下所有因素:file, http, https, net.pipe, and net.tcp
如果您使用的是ftp
之类的内容,那么它就无法逃脱,但听起来这并不是您的选择。
作为某些方案的构造函数中规范化的一部分, 转义表示被压缩。 URI将采用的方案 紧凑的转义序列包括以下内容:file,http,https, net.pipe和net.tcp。 对于所有其他方案,转义序列是 没有压缩。例如:如果百分比对两个点进行编码" .."如 "%2E%2E"那么URI构造函数会压缩这个序列 方案。例如,以下代码示例显示了一个URI http方案的构造函数。