我有以下路由代码:.NET MVC路由W/url编码问题
routes.MapRoute(
"email-validated/{sessionId}",
"email-validated/{sessionId}",
new { controller = "User", action = "EmailValidated", sessionId = UrlParameter.Optional }
);
当我打W精品路线/东西是URL编码它不会匹配%2F的路线,% 2b和其他一些转义字符。它也不会匹配编码的非URL(事W/+等),例如
这工作:
电子邮件验证/ XQiKC6KMM%2cmko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso
这不起作用(containts%2F等):
email-validated/XQiKC6KMM%2fmko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso
这不起作用(包含+等)
email-validated/XQiKC6KMM+mko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso
你是如何产生这个SessionID的? – hunter
您应该使用GUID而不是该字符串。它看起来非常随机,并且有机会不仅包含严重编码的字符,而且还包含使请求无效的字符。 –
该会话是一个随机字符串,然后是64位编码,然后是HttpUtilty.UrlEncoded。我正在将遗留站点移植到mvc 3,并且重新编码会话ID如何工作不幸,因此需要针对此解决方案: –