Когда я пытаюсь добавить ограничение маршрут по умолчанию следующим образомASP.NET MVC: По умолчанию маршрут с ограничением ид
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { id = @"\d+" }
);
}
и работает сайт, я получаю:
HTTP Ошибка 403.14 - Запрещенная ошибка
Веб-сервер настроен так, чтобы не отображать содержимое этого каталога.
Только эта единственная строка с ограничением вызывает проблему. Когда он прокомментирован, сайт работает как ожидалось. Я даже могу воспроизвести это локально в новом проекте MVC.
Является ли это своего рода ошибкой, или я не понимаю что-то важное в отношении ограничений маршрута?
Я использую .NET 4.5.2, MVC 5.2.3, VS 2015 с IIS Express 10.0.
Ну, вы добавили ограничение на параметр ид, который эффективно делает идентификатор требуемого. Я думаю, вы получаете свою ошибку с URL-адресами, такими как 'yourhost /' или 'yourhost/controller/action' –
@ Daniel, действительно ли это требуется? Если да, то как я могу указать, что он должен быть целым только, но не требуется? – drty
Это сложная штука. Я думаю, вы могли бы определить маршрут '{controller}/{action}/{id}', где ни один из них не является необязательным, а id имеет ограничение. Затем еще один маршрут '{controller}/{action}', где оба являются необязательными и имеют значения по умолчанию Home/Index –