2

asp.net MVC 3 Web アプリケーションにパスワード リセット機能を実装しています。ユーザーに送信される電子メールには、暗号化された文字列を含むリンクが含まれています。以下はリンクの例です。

forgotprocess/QU1jfNoTb1Qd7qObop1FinQai4hCbzg7%2bMGfMF63d9Vvahi%2bmg9cT8KyaGo9jE1gbsWl5r%2f6DzpcRLf6HYNGeeFujG9QeblKUUvfxLDJ7UwcSCKD2AdsrR3EmC80PNCGGnGMQiya7ILNOJjWh%2fKSRQ%3d%3d

リンクをクリックすると、404 エラーが発生します。ルートをテストするために RouteDebugger を使用しましたが、まだ 404 ページが表示されます。リンクがアプリケーションに到達していないようです。ただし、リンクを次のように変更すると:

forgotprocess/?i=QU1jfNoTb1Qd7qObop1FinQai4hCbzg7%2bMGfMF63d9Vvahi%2bmg9cT8KyaGo9jE1gbsWl5r%2f6DzpcRLf6HYNGeeFujG9QeblKUUvfxLDJ7UwcSCKD2AdsrR3EmC80PNCGGnGMQiya7ILNOJjWh%2fKSRQ%3d%3d

それは正常に動作します。クエリ文字列パラメーターを使用する必要はありません。

リンク全体のサイズは約 200 文字なので、制限はありませんか?

マーク

4

1 に答える 1

2

あなたのトップルートで:

forgotprocess/QU1jfNoTb1Qd7qObop1FinQai4hCbzg7%2bMGfMF63d9Vvahi%2bmg9cT8KyaGo9jE1gbsWl5r%2f6DzpcRLf6HYNGeeFujG9QeblKUUvfxLDJ7UwcSCKD2AdsrR3EmC80PNCGGnGMQiya7ILNOJjWh%2fKSRQ%3d%3d

%2f は URL を / にデコードするため、ルーティング エンジンを混乱させます。

これを防ぐために、暗号化された文字列の生成方法を変更できますか?

あるいは、それが最後のパラメーターである場合、この投稿のようにルートを変更できますが、それは他の問題につながる可能性があります:

routes.MapRoute(
    "Default",                                                // Route name
    "{controller}/{action}/{*id}",                            // URL with parameters
    new { controller = "Home", action = "Index", id = "" });  // Parameter defaults
于 2012-08-19T14:00:09.390 に答える