ホームページ > バックエンド開発 > 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 エンコードされたスラッシュ

http:// など、エンコードされたスラッシュ (/) を含む URL にアクセスしようとした場合localhost:5000/Home/About/100/200、デフォルトのルーティング設定が一致しない可能性があります。

考えられる解決策の 1 つは、以下に示すように、URL テンプレートにキャッチオール パラメータを含めることです。

routes.MapRoute(
    "Default",                                                // Route name
    "{controller}/{action}/{*id}",                            // URL with parameters
    new { controller = "Home", action = "Index", id = "" });  // Parameter defaults
ログイン後にコピー

この調整により、任意の一連のパス セグメントをルート内でキャプチャできるようになります。 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート