以下代码......
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的第一部分仍然编码,但第二部分没有编码!答案 0 :(得分:2)
URI是一个对象,它将以干净/未转义的形式表示链接。如果您要按照添加方式检索它,请使用以下属性。
uri.OriginalString