Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 带有加密文本的ASP.net MVC路由404_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 带有加密文本的ASP.net MVC路由404

Asp.net mvc 带有加密文本的ASP.net MVC路由404,asp.net-mvc,Asp.net Mvc,我正在asp.NETMVC3Web应用程序中实现密码重置功能。发送给用户的电子邮件包含带有加密字符串的链接。下面是一个示例链接: forgotprocess/QU1jfNoTb1Qd7qObop1FinQai4hCbzg7%2bMGfMF63d9Vvahi%2bmg9cT8KyaGo9jE1gbsWl5r%2f6DzpcRLf6HYNGeeFujG9QeblKUUvfxLDJ7UwcSCKD2AdsrR3EmC80PNCGGnGMQiya7ILNOJjWh%2fKSRQ%3d%3d 当点击链接

我正在asp.NETMVC3Web应用程序中实现密码重置功能。发送给用户的电子邮件包含带有加密字符串的链接。下面是一个示例链接:

forgotprocess/QU1jfNoTb1Qd7qObop1FinQai4hCbzg7%2bMGfMF63d9Vvahi%2bmg9cT8KyaGo9jE1gbsWl5r%2f6DzpcRLf6HYNGeeFujG9QeblKUUvfxLDJ7UwcSCKD2AdsrR3EmC80PNCGGnGMQiya7ILNOJjWh%2fKSRQ%3d%3d
当点击链接时,我得到一个404错误。为了测试我使用RoutedBugger的路由,但是我仍然得到404页面——似乎链接没有到达应用程序。但是,如果我将链接更改为以下内容:

forgotprocess/?i=QU1jfNoTb1Qd7qObop1FinQai4hCbzg7%2bMGfMF63d9Vvahi%2bmg9cT8KyaGo9jE1gbsWl5r%2f6DzpcRLf6HYNGeeFujG9QeblKUUvfxLDJ7UwcSCKD2AdsrR3EmC80PNCGGnGMQiya7ILNOJjWh%2fKSRQ%3d%3d
它很好用。我不想使用查询字符串参数

整个链接的大小大约是200个字符,所以它不应该达到任何限制

在你的最佳路线中标记:

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

您在global.asax中定义了哪些路线?Mark,谢谢您的回复。我决定使用HttpServerUtility.UrlTokenEncode和HttpServerUtility.UrlTokenDecode来避免这种类型的编码问题——到目前为止,它似乎是可行的。这需要更多的测试才能确定。你知道这些方法有什么问题吗?我不知道这些方法有什么问题,而这似乎是一个更为防弹的解决方案