Maison > développement back-end > C++ > Comment gérer les barres obliques codées en URL dans le routage ASP.NET ?

Comment gérer les barres obliques codées en URL dans le routage ASP.NET ?

Patricia Arquette
Libérer: 2025-01-05 01:34:40
original
744 Les gens l'ont consulté

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

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
Copier après la connexion

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));
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal