URL 中的URL 編碼斜杠
嘗試訪問包含編碼斜杠(/) 的URL,例如http:// 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
此調整允許在 URL 範本中捕獲任何一系列路徑段。 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中文網其他相關文章!