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 중국어 웹사이트의 기타 관련 기사를 참조하세요!