Ho il codice di routing seguente:.NET MVC routing w/URL Encoding Problemi
routes.MapRoute(
"email-validated/{sessionId}",
"email-validated/{sessionId}",
new { controller = "User", action = "EmailValidated", sessionId = UrlParameter.Optional }
);
Quando mi ha colpito la strada w/qualcosa che è URL codificato non corrisponderà il percorso per 2F%,% 2b e alcuni altri personaggi fuggiti. Inoltre non corrisponderà per non url codificato (cose w/+, ecc) Ad esempio
Questo funziona:
email convalidato/XQiKC6KMM% 2cmko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso
questo non funziona (containts% 2F ecc):
email-validated/XQiKC6KMM%2fmko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso
Questo non funziona (contiene +, ecc)
email-validated/XQiKC6KMM+mko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso
come stai generando questo SessionId? – hunter
È necessario utilizzare un GUID anziché quella stringa. Sembra molto casuale e ha la possibilità di contenere non solo caratteri mal codificati ma anche caratteri <> che invalidano la richiesta. –
la sessione è una stringa casuale che è quindi codificata 64 base e quindi HttpUtilty.UrlEncoded. Sto lavorando con il porting di un sito legacy a mvc 3 e sarebbe estremamente difficile ricodificare come funzionano gli ID di sessione, purtroppo ho bisogno di una soluzione per questo :( –