Это кодирует его, как это должно, Вы могли, вероятно, UrlDecode это для возвращения его с пробелами, но это не "искажается", это просто правильно кодируется.
я не уверен, что Вы пишете, но преобразовать его назад в asp.net, это - Сервер. UrlDecode (путь). Вы также смогли использовать LocalPath, а не AbsolutePath, если это - Приложение Windows.
Это - способ, которым это, как предполагается. Это назвало кодирование URL. Это применяется, потому что пробелы не позволяются в URL.
, Если Вы хотите путь назад с включенными пробелами, необходимо назвать что-то как:
string path = Server.URLDecode(myUri.AbsolutePath);
Вы не должны быть обязаны импортировать что-либо для использования этого в веб-приложении. Если Вы получаете ошибку, попытайтесь импортировать Систему. Сеть. HttpServerUtility. Или, можно назвать его как так:
string path = HttpContext.Current.Server.URLDecode(myUri.AbsolutePath);