首頁 > 後端開發 > C++ > 如何處理 ASP.NET 路由中 URL 編碼的斜線?

如何處理 ASP.NET 路由中 URL 編碼的斜線?

Patricia Arquette
發布: 2025-01-05 01:34:40
原創
721 人瀏覽過

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

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板