HttpContext.Current.Server.UrlEncode
Działa tylko w .NET Framework. Jak mogę kodować lub dekodować argumenty uri w projekcie ASP.NET Core?
c#
asp.net-core
asp.net-core-mvc
wtf512
źródło
źródło
HttpContext.Current
aleHttpContext
jest częścią .Net Core -Microsoft.AspNetCore.Http.HttpContext
. Pamiętaj o tymOdpowiedzi:
W przypadku ASP.NET Core 2.0+ wystarczy dodać
System.Net
przestrzeń nazw -WebUtility
klasa jest dostarczana jako częśćSystem.Runtime.Extensions
pakietu NuGet, do którego odwołuje się domyślnie w projekcie ASP.NET Core.W przypadku poprzedniej wersji dodaj
Microsoft.AspNetCore.WebUtilities
pakiet NuGet.Wtedy
WebUtility
klasa będzie dla Ciebie dostępna:źródło
Jest dostępny w wersji 2.0.0 zestawu .Net Core SDK w
System.Net.WebUtility.UrlEncode
( zobacz dokumentację )źródło
System.Net.WebUtility.UrlEncode
: spacje są kodowane przy użyciu rozszerzenia+
. KiedyśUri.EscapeDataString
kodowałem z%20
.W przypadku ASP.Net Core 2.0+ i jeśli potrzebujesz spacji do zakodowania jako
%20
w przeciwieństwie do
+
;Posługiwać się:
źródło
Nie trać czasu, mam duże doświadczenie z tak zwanymi koderami adresów URL, wszystkie są bezużyteczne i mają różne dziwactwa. Np. WebUtility.UrlEncode nie dba o znak „+”.
Jeśli chcesz zakodować parametry adresu URL, zastosuj kodowanie BASE58. Używa tylko liter alfabetu + cyfr, więc nie musisz kodować adresu URL.
źródło
WebUtility.UrlEncode
i cudownie przekonwertował znak plus („+”) na „% 2B”. Używam .NET Core 3.1.Używam przekierowania , a UrlEncode nie działa dla mnie, ponieważ koduje cały adres URL. Rozwiązałem ten problem, używając zamiast tego UriHelper.Encode, pokazanego poniżej.
UriHelper.Encode
źródło