簡體   English   中英

新的Uri解碼相對路徑

[英]new Uri decoding relative path

以下代碼...

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為什么不轉義相對路徑? 解決方法似乎是對relativepath進行兩次編碼,但是為什么呢?

我應該使用其他方法來創建此網址嗎?

編輯:我更新了代碼以顯示更多的奇怪行為,相對uri的第一部分保持編碼,但是第二部分沒有編碼!

URI是一個對象,它將以純凈/未轉義的形式表示鏈接。 如果您希望以添加方式對其進行檢索,請使用以下屬性。

uri.OriginalString

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM