HttpContext.Current.Server.UrlEncode
Cela ne fonctionne que dans .NET Framework. Comment puis-je encoder ou décoder des arguments d'URI dans un projet ASP.NET Core?
c#
asp.net-core
asp.net-core-mvc
wtf512
la source
la source
HttpContext.Current
maisHttpContext
fait partie de .Net Core -Microsoft.AspNetCore.Http.HttpContext
. Rappelez-vous ceciRéponses:
Pour ASP.NET Core 2.0+, ajoutez simplement un
System.Net
espace de noms - laWebUtility
classe estSystem.Runtime.Extensions
fournie dans le cadre du package nuget, référencé par défaut dans le projet ASP.NET Core.Pour la version précédente, ajoutez le
Microsoft.AspNetCore.WebUtilities
package nuget.Ensuite, le
WebUtility
cours sera disponible pour vous:la source
Il est disponible sur la version 2.0.0 du SDK .Net Core , dans
System.Net.WebUtility.UrlEncode
( voir documentation )la source
System.Net.WebUtility.UrlEncode
: les espaces sont encodés avec un+
. J'avais l'habitudeUri.EscapeDataString
d'encoder avec%20
.Pour ASP.Net Core 2.0+ et si vous avez besoin d'espaces à encoder comme
%20
par opposition à
+
;Utilisation:
la source
Ne perdez pas votre temps, j'ai beaucoup d'expérience avec ces soi-disant encodeurs 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 encoder des paramètres d'URL, utilisez un encodage BASE58. Il n'utilise que des lettres de l'alphabet + des chiffres, vous n'avez donc pas besoin d'encoder l'URL.
la source
WebUtility.UrlEncode
et il a merveilleusement converti un signe plus ("+") en un "% 2B". J'utilise .NET Core 3.1.J'utilise un redirection et UrlEncode n'a pas fonctionné pour moi car il code l'URL entière. J'ai résolu ce problème en utilisant à la place UriHelper.Encode, illustré ci-dessous.
UriHelper.Encode
la source