HttpContext.Current.Server.UrlEncode
.NET Framework에서만 작동합니다. ASP.NET Core 프로젝트에서 URI 인수를 인코딩하거나 디코딩하려면 어떻게해야하나요?
답변
-
ASP.NET Core 2.0+의 경우
System.Net
네임 스페이스를 추가하기 만하면WebUtility
됩니다. 클래스는System.Runtime.Extensions
기본적으로 ASP.NET Core 프로젝트에서 참조되는 nuget 패키지의 일부로 제공됩니다 . -
이전 버전의 경우
Microsoft.AspNetCore.WebUtilities
너겟 패키지를 추가하십시오 .
그런 다음 WebUtility
수업을 사용할 수 있습니다.
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
답변
그것은에서 사용할 수 닷넷 코어 SDK 버전 2.0.0 에서, System.Net.WebUtility.UrlEncode
( 설명서를 참조 )
답변
ASP.Net Core 2.0+ 및 인코딩 할 공백이 필요한 경우 %20
반대로 +
;
사용하다:
Uri.EscapeDataString(someString);
답변
시간을 낭비하지 마십시오. 소위 url 인코더에 대한 경험이 풍부하고 모두 쓸모없고 다른 단점이 있습니다. 예 : WebUtility.UrlEncode는 “+”기호를 처리하지 않습니다.
URL 매개 변수를 인코딩하려면 BASE58 인코딩을 사용하십시오. 알파벳 문자 + 숫자 만 사용하므로 URL 인코딩이 필요하지 않습니다.
답변
리디렉션을 사용하고 있으며 전체 URL을 인코딩하기 때문에 UrlEncode가 작동하지 않았습니다. 대신 아래에 표시된 UriHelper.Encode를 사용하여이 문제를 해결했습니다.
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));