Przed .Net 4.5 wygląda na to, że System.Uri zakodowałby zakodowane ukośniki, ale zostało to już naprawione. Numer referencyjny: https://stackoverflow.com/a/20733619/188740System.Uri i kodowany dwukropek (:)
Z tym samym problemem napotykam dwukropki. System.Uri nadal nie koduje kodowane dwukropki. Przykład:
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
Wskazówki jak %3A
zostanie przełączony do :
przez System.Uri. Czy to błąd? Jakie jest najlepsze obejście tego problemu?
AbsoluteUri działa jak urok. Dlaczego dwukropki są niekodowane bez AbsoluteUri? Wygląda mi na błąd. –
Tak to wygląda. Wierzę, że błąd jest gdzieś [tutaj] (http://referencesource.microsoft.com/#System/net/System/URI.cs,1675), który rozwija się i unescapes niektóre części. Natomiast ".AbsoluteUri' ma znacznie prostszą [implementację] (http://referencesource.microsoft.com/#System/net/System/URI.cs,738). – degant