>백엔드 개발 >C++ >ASP.NET 라우팅에서 URL 인코딩 슬래시를 처리하는 방법은 무엇입니까?

ASP.NET 라우팅에서 URL 인코딩 슬래시를 처리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-05 01:34:40756검색

How to Handle URL-Encoded Slashes in ASP.NET Routing?

URL의 URL 인코딩 슬래시

http://와 같이 인코딩된 슬래시(/)가 포함된 URL에 액세스하려고 할 때 localhost:5000/Home/About/100/200, 기본 라우팅 구성이 일치하지 않을 수 있습니다. 경로.

한 가지 가능한 해결책은 아래에 설명된 것처럼 URL 템플릿에 포괄적 매개변수를 포함하는 것입니다.

routes.MapRoute(
    "Default",                                                // Route name
    "{controller}/{action}/{*id}",                            // URL with parameters
    new { controller = "Home", action = "Index", id = "" });  // Parameter defaults

이 조정을 통해 일련의 경로 세그먼트를 슬래시를 포함한 id 매개변수입니다. 그러나 이 접근 방식은 모든 시나리오에 적합하지 않을 수 있습니다.

특히 인코딩된 슬래시가 단일 매개변수의 일부인 경우 또 다른 옵션은 사용자 지정 인코딩 및 디코딩 논리를 구현하는 것입니다. 이는 아래 제공된 것과 같은 사용자 정의 클래스를 통해 수행할 수 있습니다.

public class UrlEncoder
{ 
    public string URLDecode(string  decode)
    {
        if (decode == null) return null;
        if (decode.StartsWith("="))
        {
            return FromBase64(decode.TrimStart('='));
        }
        else
        {
            return HttpUtility.UrlDecode( decode) ;
        }
    }

    public string UrlEncode(string encode)
    {
        if (encode == null) return null;
        string encoded = HttpUtility.PathEncode(encode);
        if (encoded.Replace("%20", "") == encode.Replace(" ", ""))
        {
            return encoded;
        }
        else
        {
            return "=" + ToBase64(encode);
        }
    }

    public string ToBase64(string encode)
    {
        Byte[] btByteArray = null;
        UTF8Encoding encoding = new UTF8Encoding();
        btByteArray = encoding.GetBytes(encode);
        string sResult = System.Convert.ToBase64String(btByteArray, 0, btByteArray.Length);
        sResult = sResult.Replace("+", "-").Replace("/", "_");
        return sResult;
    }

    public string FromBase64(string decode)
    {
        decode = decode.Replace("-", "+").Replace("_", "/");
        UTF8Encoding encoding = new UTF8Encoding();
        return encoding.GetString(Convert.FromBase64String(decode));
    }
}

이 클래스를 사용하면 문자열을 사용자 정의 방식으로 인코딩 및 디코딩하여 가독성을 유지하면서 슬래시와 같은 특수 문자가 올바르게 처리되도록 할 수 있습니다. 유용성.

위 내용은 ASP.NET 라우팅에서 URL 인코딩 슬래시를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.