Кодирование и декодирование 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);
}

Ответ 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)));