HttpContext.Current.Server.UrlEncode
Это работает только в .NET Framework. Как я могу кодировать или декодировать аргументы uri в проекте ASP.NET Core?
c#
asp.net-core
asp.net-core-mvc
wtf512
источник
источник
HttpContext.Current
ноHttpContext
является частью .Net Core -Microsoft.AspNetCore.Http.HttpContext
. Помните этоОтветы:
Для ASP.NET Core 2.0+ просто добавьте
System.Net
пространство имен -WebUtility
класс поставляется как частьSystem.Runtime.Extensions
пакета nuget, на который по умолчанию ссылаются в проекте ASP.NET Core.Для предыдущей версии добавьте
Microsoft.AspNetCore.WebUtilities
пакет nuget.Тогда вам
WebUtility
будет доступен урок:источник
Он доступен в версии 2.0.0 SDK .Net Core в
System.Net.WebUtility.UrlEncode
( см. Документацию )источник
System.Net.WebUtility.UrlEncode
: пробелы кодируются с расширением+
. Раньше яUri.EscapeDataString
кодировал с помощью%20
.Для ASP.Net Core 2.0+ и если вам нужно, чтобы пробелы были закодированы как
%20
в отличие от
+
;Использование:
источник
Не тратьте зря время, у меня большой опыт работы с так называемыми кодировщиками URL-адресов, все они бесполезны и имеют разные особенности. Например, WebUtility.UrlEncode не заботится о знаке "+".
Если вы хотите закодировать параметры URL, используйте кодировку BASE58. Он использует только буквы алфавита + цифры, поэтому вам не нужно кодировать URL-адрес.
источник
WebUtility.UrlEncode
и он чудесным образом преобразовал знак плюса («+») в «% 2B». Я использую .NET Core 3.1.Я использую перенаправление , и UrlEncode у меня не работал, потому что он кодирует весь URL. Я решил это, вместо этого используя UriHelper.Encode, показанный ниже.
UriHelper.Encode
источник