[c#] ASP.NET Core에서 URL 인코딩 및 디코딩

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를 사용하여이 문제를 해결했습니다.

UriHelper.Encode

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


답변