HttpContext.Current.Server.UrlEncode
Só funciona no .NET Framework. Como posso codificar ou decodificar argumentos uri no projeto ASP.NET Core?
fonte
HttpContext.Current.Server.UrlEncode
Só funciona no .NET Framework. Como posso codificar ou decodificar argumentos uri no projeto ASP.NET Core?
Para ASP.NET Core 2.0+, basta adicionar o System.Net
namespace - a WebUtility
classe é fornecida como parte do System.Runtime.Extensions
pacote nuget, que é referenciado por padrão no projeto ASP.NET Core.
Para a versão anterior, adicione o Microsoft.AspNetCore.WebUtilities
pacote nuget.
Então a WebUtility
aula estará disponível para você:
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
Está disponível na versão 2.0.0 do .Net Core SDK , em System.Net.WebUtility.UrlEncode
( veja a documentação )
System.Net.WebUtility.UrlEncode
: os espaços são codificados com a +
. Eu costumava Uri.EscapeDataString
codificar com %20
.
Para ASP.Net Core 2.0+ e se você precisar de espaços para serem codificados como %20
em oposição a +
;
Usar:
Uri.EscapeDataString(someString);
Não perca seu tempo, tenho muita experiência com esses chamados codificadores de URL, todos são inúteis e têm peculiaridades diferentes. Por exemplo, WebUtility.UrlEncode não aceita o sinal "+".
Se você deseja codificar parâmetros de URL, use uma codificação BASE58. Ele usa apenas letras do alfabeto + números, portanto, você não precisa codificar url.
WebUtility.UrlEncode
e converteu maravilhosamente um sinal de mais ("+") em "% 2B". Estou usando o .NET Core 3.1.
Estou usando um redirecionamento e UrlEncode não funcionou para mim porque ele codifica todo o url. Resolvi isso usando UriHelper.Encode, mostrado abaixo.
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
HttpContext.Current
masHttpContext
faz parte do .Net Core -Microsoft.AspNetCore.Http.HttpContext
. Lembre-se disso