首页 > 后端开发 > C++ > 如何处理 ASP.NET 路由中 URL 编码的斜杠?

如何处理 ASP.NET 路由中 URL 编码的斜杠?

Patricia Arquette
发布: 2025-01-05 01:34:40
原创
713 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板