HttpContext.Current.Server.UrlEncode
Es funktioniert nur in .NET Framework. Wie kann ich uri-Argumente in einem ASP.NET Core-Projekt codieren oder decodieren?
c#
asp.net-core
asp.net-core-mvc
wtf512
quelle
quelle
HttpContext.Current
aberHttpContext
einen Teil von .Net Core -Microsoft.AspNetCore.Http.HttpContext
. Denken Sie daranAntworten:
Für ASP.NET Core 2.0+ fügen Sie einfach einen
System.Net
Namespace hinzu. DieWebUtility
Klasse wird als Teil desSystem.Runtime.Extensions
Nuget-Pakets geliefert, auf das im ASP.NET Core-Projekt standardmäßig verwiesen wird.Für die vorherige Version fügen Sie das
Microsoft.AspNetCore.WebUtilities
Nuget-Paket hinzu.Dann
WebUtility
steht Ihnen die Klasse zur Verfügung:quelle
Es ist in Version 2.0.0 des .Net Core SDK in verfügbar
System.Net.WebUtility.UrlEncode
( siehe Dokumentation ).quelle
System.Net.WebUtility.UrlEncode
: Leerzeichen werden mit a codiert+
. Ich habeUri.EscapeDataString
mit codiert%20
.Für ASP.Net Core 2.0+ und wenn Leerzeichen codiert werden müssen als
%20
im Gegensatz zu
+
;Verwenden:
quelle
Verschwenden Sie keine Zeit, ich habe viel Erfahrung mit diesen sogenannten URL-Encodern, sie sind alle nutzlos und haben unterschiedliche Macken. Zum Beispiel kümmert sich WebUtility.UrlEncode nicht um das "+" - Zeichen.
Wenn Sie URL-Parameter codieren möchten, verwenden Sie eine BASE58-Codierung. Es werden nur Buchstaben + Zahlen verwendet, sodass Sie keine URL-Codierung benötigen.
quelle
WebUtility.UrlEncode
und es hat wunderbar ein Pluszeichen ("+") in ein "% 2B" umgewandelt. Ich verwende .NET Core 3.1.Ich verwende eine Umleitung , und UrlEncode hat bei mir nicht funktioniert, da es die gesamte URL codiert. Ich habe dies gelöst, indem ich stattdessen UriHelper.Encode verwendet habe (siehe unten).
UriHelper.Encode
quelle