Trước .Net 4.5, có vẻ như System.Uri sẽ mã hóa các dấu gạch chéo được mã hóa, nhưng điều này đã được sửa. Tham chiếu: https://stackoverflow.com/a/20733619/188740System.Uri và dấu hai chấm được mã hóa (:)
Tôi đang gặp phải vấn đề tương tự với dấu hai chấm. System.Uri vẫn unencode mã hóa dấu hai chấm. Ví dụ:
var uri = new Uri("http://www.example.com/?foo=http%3A%2F%2Fwww.example.com");
var s = uri.ToString(); //http://www.example.com/?foo=http:%2F%2Fwww.example.com
Chú ý cách %3A
được chuyển trở lại :
bởi System.Uri. Đây có phải là một lỗi? Cách giải quyết tốt nhất là gì?
AbsoluteUri hoạt động như một sự quyến rũ. Tại sao các dấu hai chấm không được mã hóa mà không có AbsoluteUri? Có vẻ như là một lỗi đối với tôi. –
Có vẻ như vậy. Tôi tin rằng lỗi là một nơi nào đó [ở đây] (http://referencesource.microsoft.com/#System/net/System/URI.cs,1675) mà đi trước và unescapes phần nhất định. Trong khi '.AbsoluteUri' có một [thực hiện đơn giản hơn nhiều] (http://referencesource.microsoft.com/#System/net/System/URI.cs,738). – degant