Heim >Backend-Entwicklung >C++ >Wie gehe ich mit URL-codierten Schrägstrichen beim ASP.NET-Routing um?

Wie gehe ich mit URL-codierten Schrägstrichen beim ASP.NET-Routing um?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-05 01:34:40773Durchsuche

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

URL-codierter Schrägstrich in der URL

Beim Versuch, auf eine URL zuzugreifen, die einen codierten Schrägstrich (/) enthält, z. B. http:// localhost:5000/Home/About/100/200, die Standard-Routing-Konfiguration stimmt möglicherweise nicht mit der Route überein.

Eins Eine mögliche Lösung besteht darin, einen Catch-All-Parameter in die URL-Vorlage aufzunehmen, wie unten gezeigt:

routes.MapRoute(
    "Default",                                                // Route name
    "{controller}/{action}/{*id}",                            // URL with parameters
    new { controller = "Home", action = "Index", id = "" });  // Parameter defaults

Diese Anpassung ermöglicht die Erfassung einer beliebigen Reihe von Pfadsegmenten im ID-Parameter, einschließlich Schrägstrichen. Allerdings ist dieser Ansatz möglicherweise nicht für alle Szenarien geeignet.

Eine weitere Option, insbesondere wenn der codierte Schrägstrich Teil eines einzelnen Parameters ist, besteht darin, eine benutzerdefinierte Codierungs- und Decodierungslogik zu implementieren. Dies kann durch eine benutzerdefinierte Klasse wie die unten bereitgestellte erreicht werden:

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));
    }
}

Mit dieser Klasse können Sie Zeichenfolgen auf benutzerdefinierte Weise kodieren und dekodieren, um sicherzustellen, dass Sonderzeichen wie Schrägstriche korrekt verarbeitet werden und gleichzeitig die Lesbarkeit gewahrt bleibt Benutzerfreundlichkeit.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit URL-codierten Schrägstrichen beim ASP.NET-Routing um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn