Мое веб-приложение MVC создает ссылку активации, которая может содержать любой символ (%, +,/и т. Д.). Я URL кодировать строку и сгенерировать ссылку:Обработка URL-адресов с помощью ASP.NET MVC
new UrlHelper(HttpContext.Current.Request.RequestContext)
.RouteUrl("AccountActivation",
new { id = HttpContext.Current.Server.UrlEncode(activationString) };
затем добавить домен, и это выглядит как:
http://localhost/AccountActivation/asdlkj223%25asd%2Basw3fgasdme
URL, затем передается пользователю.
Маршрут в этом случае:
routes.MapRoute(
"ActivateAccount",
"AccountActivation/{id}",
new { controller = "Account", action = "Activate", id = ""});
Казалось хорошо для меня, но сервер разработки ASP.NET и IIS дает мне ошибку HTTP 400 - Bad запрос. Это означает, что проблема с URL-адресом, который я не вижу.
Когда избавиться от {ID} в описании маршрута (я также пытался {* идентификатор} без успеха):
routes.MapRoute(
"ActivateAccount",
"AccountActivation",
new { controller = "Account", action = "Activate"});
URL, выглядит следующим образом:
http://AccountActivation?id=asdlkj223%25asd%2Basw3fgasdme
и они работа просто отлично ...
Я, хотя эти 2 подхода делают то же самое. В чем разница между ними? Является ли это MVC-движок для чего-то большего для меня, или я что-то пропускаю с кодировкой URL.
Как выглядит действие Activate? Есть ли исключения в журнале, которые дают больше информации об основной ошибке? – chris