Кодирование и декодирование URL в ядре ASP.NET
HttpContext.Current.Server.UrlEncode
Он работает только в.NET Framework. Как я могу кодировать или декодировать аргументы uri в проекте ASP.NET Core?
Ответы
Ответ 1
-
Для ASP.NET Core 2. 0+ просто добавьте пространство имен System.Net
- класс WebUtility
отправляется как часть пакета System.Runtime.Extensions
nuget, который по умолчанию упоминается в проекте ASP.NET Core.
-
Для предыдущей версии добавьте пакет Microsoft.AspNetCore.WebUtilities
nuget.
Тогда класс WebUtility
будет доступен для вас:
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
Ответ 2
Он доступен в версии 2.0.0.Net Core SDK в System.Net.WebUtility.UrlEncode
(см. Документацию)
Ответ 3
Для ASP.Net Core 2. 0+, и если вам нужны пробелы, которые будут закодированы как %20
в отличие от +
;
Использование:
Uri.EscapeDataString(someString);
Ответ 4
Не тратьте впустую свое время, у меня есть много опыта с этими так называемыми энкодерами URL, они бесполезны и имеют разные причуды. Например, WebUtility.UrlEncode не заботится о знаке "+".
Если вы хотите кодировать параметры URL, используйте кодировку BASE58. Он использует только буквы алфавита + цифры, поэтому вам не нужно кодировать URL.
Ответ 5
Я использую перенаправление, и UrlEncode не работает для меня, потому что он кодирует весь URL. Я решил это, вместо этого используя UriHelper.Encode, как показано ниже.
UriHelper.Encode
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));