是否有一种方法来保持点段在url使用Uri类

本文关键字:url Uri 使用 方法 一种 是否 | 更新日期: 2023-09-27 18:11:29

当我创建一个带有点段的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类是遵循标准(第33页- remove_dot_segments),但是有任何方法来保持点段而不是自动解析目标uri,使用uri类?或者我是否需要自定义实现?

是否有一种方法来保持点段在url使用Uri类

如果您使用HTTP,则不,如果您使用Uri类,它将始终转义它们。file, http, https, net.pipe, and net.tcp

如果您使用的是ftp之类的东西,那么它不会逃逸,但听起来这不是您的选项。

来自MSDN的文档:

作为某些方案构造函数规范化的一部分,转义表示是压缩的。URI将使用的模式紧凑的转义序列包括:file, http, https,网Pipe和net.tcp。对于所有其他方案,转义序列是不压实。例如:如果您将两个点".."百分比编码为"%2E%2E"则URI构造函数将此序列压缩为一些计划。例如,下面的代码示例显示了一个URIHTTP方案的构造函数。