.Net 4.5より前では、System.Uriはエンコードされたスラッシュのエンコードを解除するようですが、これは修正されています。参照:https://stackoverflow.com/a/20733619/188740System.Uriとコード化されたコロン(:)
コロンで同じ問題が発生しました。 System.Uriはエンコードされたコロンをまだエンコードしていません。例:%3A
が可能System.Uriで:
に切り替えますか
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
注意してください。これはバグですか?何が最善の回避策ですか?
AbsoluteUriはチャームのように機能します。コロンがAbsoluteUriなしでエンコードされないのはなぜですか?私にはバグのようだ。 –
はいそうです。私はエラーがどこかにあると信じています[ここ](http://referencesource.microsoft.com/#System/net/System/URI.cs,1675)先に進み、特定の部分をエスケープします。 '.AbsoluteUri'はもっと簡単な[実装](http://referencesource.microsoft.com/#System/net/System/URI.cs,738)を持っています。 – degant