Barre oblique codée dans l'URL
Lors de la tentative d'accès à une URL contenant une barre oblique codée (/), telle que http:// localhost:5000/Home/About/100/200, la configuration de routage par défaut peut ne pas correspondre à l'itinéraire.
Un La solution potentielle consiste à inclure un paramètre fourre-tout dans le modèle d'URL, comme illustré ci-dessous :
routes.MapRoute( "Default", // Route name "{controller}/{action}/{*id}", // URL with parameters new { controller = "Home", action = "Index", id = "" }); // Parameter defaults
Cet ajustement permet de capturer toute série de segments de chemin dans le paramètre id, y compris les barres obliques. Cependant, cette approche peut ne pas convenir à tous les scénarios.
Une autre option, en particulier si la barre oblique codée fait partie d'un seul paramètre, consiste à implémenter une logique d'encodage et de décodage personnalisée. Cela peut être accompli via une classe personnalisée comme celle fournie ci-dessous :
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)); } }
Cette classe vous permet d'encoder et de décoder des chaînes de manière personnalisée, garantissant que les caractères spéciaux tels que les barres obliques sont traités correctement tout en conservant la lisibilité et convivialité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!