Я добавил область в свой проект MVC 3.Я не могу заставить работать маршрутизацию с очень простым сценарием.Кажется, всегда хотят разрешить в этой области.Вот моя конфигурация.При запуске:
AreaRegistration.RegisterAllAreas();
IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Browse", action = "Index", id = UrlParameter.Optional }
И
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "Admin"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Users", action = "Index", id = UrlParameter.Optional }
);
}
}
В web.config:
<authentication mode="Forms">
<forms loginUrl="~/Login" defaultUrl="~/Browse" timeout="60" cookieless="UseDeviceProfile" />
</authentication>
Я использую RouteDebugger, чтобы попытаться ее решить.Когда я перехожу на страницу входа в систему, отладчик показывает:
- AppRelativeCurrentExecutionFilePath: ~ Login
- Admin / {controller} / {action} / {id} Не соответствует Текущий запрос
- {controller} / {action} / {id} Соответствует Текущий запрос
- Соответствующий маршрут: {controller} / {action} / {id}
Пока все хорошо.Но затем он показывает это:
- Сгенерированный URL: / Admin / Логин? ReturnUrl =% 2F по маршруту "Admin / {controller} / {action} / {id}"
Далее я регистрируюсь. Мой метод Login / Index не используется, и отладчик показывает:
- AppRelativeCurrentExecutionFilePath: ~ Login
- Admin / {controller} / {action} / {id} не совпадает текущий запрос
- {controller} / {action} / {id} соответствует текущий запрос
- соответствует маршруту: {controller} / {action} / {id}
- Сгенерированный URL: / Admin / Login? ReturnUrl =% 2FAdmin% 2FLogin, используя маршрут «Admin / {controller} / {action} / {id}»
С одной стороны, он говорит, что он не соответствует маршруту администратора, а затем в сгенерированном URL-адресе он говорит, что использует этот маршрут.Я в тупике.