web-dev-qa-db-fra.com

URL Encode and Decode dans ASP.NET Core

HttpContext.Current.Server.UrlEncode

Cela ne fonctionne que dans .NET Framework. Comment puis-je encoder ou décoder des arguments URI dans un projet ASP.NET Core?

85
wtf512
  • Pour ASP.NET Core 2.0+, ajoutez simplement System.Net espace de nom - WebUtility la classe est fournie avec le package System.Runtime.Extensions nuget, référencé par défaut dans le projet ASP.NET Core.

  • Pour la version précédente, ajoutez le package Microsoft.AspNetCore.WebUtilities nuget.

Ensuite, la classe WebUtility sera disponible pour vous:

public static class WebUtility
{
    public static string UrlDecode(string encodedValue);
    public static string UrlEncode(string value);
}
141
Set

Il est disponible sur version 2.0.0 du .Net Core SDK , dans System.Net.WebUtility.UrlEncode ( voir documentation )

72
Manuel Alves

Pour ASP.Net Core 2.0+ et si vous souhaitez que les espaces soient codés comme suit: %20

par opposition à +;

Utilisation:

 Uri.EscapeDataString(someString);
29
ttugates

Ne perdez pas votre temps, j'ai beaucoup d'expérience avec ces soi-disant codeurs d'URL, ils sont tous inutiles et ont des bizarreries différentes. Par exemple, WebUtility.UrlEncode ne prend pas en charge le signe "+".

Si vous souhaitez coder les paramètres d'URL, utilisez un codage BASE58. Il utilise uniquement des lettres de l'alphabet + des chiffres, vous n'avez donc pas besoin de coder l'URL.

2

J'utilise une redirection et UrlEncode n'a pas fonctionné pour moi car il code l'intégralité de l'URL. J'ai résolu ce problème en utilisant plutôt UriHelper.Encode, présenté ci-dessous.

riHelper.Encode

// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
0
Jordan