我有以下路由代碼:.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如何工作不幸,因此需要針對此解決方案: –