Обновление: похоже, поведение класса Uri по умолчанию изменилось в .NET 4.5, и теперь вы можете использовать экранированные косые черты, и они не будут затронуты.
Я запустил следующий код в .NET 3.5, .NET 4.0, .NET 4.5 / 4.5.1
static void Main(string[] args)
{
var uri = new Uri("http://www.yahooo.com/%2F");
var client = new WebClient();
client.DownloadString(uri);
}
В .NET 3.5 / 4.0 трассировка показывает, что% 2F на самом деле был неэкранированным, как ожидалось.
Однако в .NET 4.5 / 4.5.1 видно, что% 2F не был удален (обратите внимание на GET /% 2F)
Теперь вы можете даже использовать ToString () в Uri, и вы получите тот же результат.
Итак, в заключение, если вы используете .NET> = .NET 4.5, то все будет работать так, как должно соответствовать RFC.
Я только что провел исследование, пытаясь заставить тот же подход работать с Mono. Я отправил свой вопрос о подходе здесь: Получение Uri с экранированными слешами на моно