新的Uri解码相对路径

下面的代码...

string date = DateTime.UtcNow.ToString("o");
Console.WriteLine(date);
string encodedDate = WebUtility.UrlEncode(date);
Console.WriteLine(encodedDate);
Uri uri = new Uri("https://mywebsite/");
Console.WriteLine(uri.ToString());
string relativePath = $"/mM0jpk613J5lzY00c3EaxQ%3D%3D/{encodedDate}";
Console.WriteLine(relativePath);
uri = new Uri(uri, relativePath);
Console.WriteLine(uri.ToString());

产生以下输出是: -

2016-03-07T08:17:38.5247330Z
2016-03-07T08%3A17%3A38.5247330Z
https://mywebsite/
/mM0jpk613J5lzY00c3EaxQ%3D%3D/2016-03-07T08%3A17%3A38.5247330Z
https://mywebsite/mM0jpk613J5lzY00c3EaxQ%3D%3D/2016-03-07T08:17:38.5247330Z

我期待最后一行是

HTTPS://mywebsite/mM0jpk613J5lzY00c3EaxQ%3D%3D/2016-03-07T08%3A17%3A38.5247330Z

为什么Uri没有找到相对路径? 解决方法似乎是对相关路径进行两次编码,但为什么?

有没有一种替代方法我应该用来创建此网址?

编辑:我更新了代码以显示更奇怪的行为,相对uri的第一部分仍然编码,但第二部分没有!


URI是一个对象,并将以干净/未转义的形式表示链接。 如果您正在寻找以添加方式检索它,请使用下面的属性。

uri.OriginalString
链接地址: http://www.djcxy.com/p/64661.html

上一篇: new Uri decoding relative path

下一篇: relative URLs relative URLs?