Контроллер не активирован должным образом - PullRequest
1 голос
/ 23 декабря 2011

Я добавил контроллер в свой проект с именем UserManager (автоматически сгенерированный из фреймворка ado.net)

Когда я запускаю приложение, попытки перейти к http://server/UserManager/ встречаются с 404ошибка, но если перейти к http://server/UserManager/Index, то действие найдено и выполняется правильно.

Это случай, когда контроллер не вызывается, или он просто не рассматривает индекс как действие по умолчанию.Где эти свойства установлены?

ОБНОВЛЕНИЕ

Кажется, что проблема связана с тем, что для маршрута по умолчанию установлено значение

"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Permits", action = "ListApplications", id = UrlParameter.Optional }

Это противоречит схеме именования для Usermanager (где по умолчанию используется индекс)

Я пытался добавить альтернативные маршруты, которые предусмотрены для действий по умолчанию, но в конечном итоге выяснил, что порядок добавления маршрутов определяет, какой маршрут занимаетзапрос (чем раньше добавлен маршрут, тем больше у него шансов соответствовать критериям.)

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Необходимо убедиться, что в сопоставлении маршрута по умолчанию указано "Индекс" в качестве действия по умолчанию в вашем файле global.asax.

Убедитесь, что в вашем файле global.asax есть следующий параметр:

   routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        );

В ОТВЕТЕ НА СВОЙ КОММЕНТАРИЙ:

Только путем добавления новых сопоставлений маршрутов.Вы также должны знать, что будет применено первое сопоставление сопоставления маршрутов, поэтому порядок, в котором вы указываете сопоставления в Global.asax, имеет решающее значение.
Например, мы хотели, чтобы наш контроллер FAQ работал с URL http://domain/faq/{id} без действия, указанного в URL, поэтому мы объявили следующее сопоставление перед значением по умолчанию:

routes.MapRoute("Faq", "Faq/{id}", new { controller = "Faq", action = "Answer" });
1 голос
/ 23 декабря 2011

В Global.asax.cs проверьте, установлен ли маршрут по умолчанию:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", new {
        controller = "Home", 
        action  = "Index", 
        id = UrlParameter.Optional}
);

Кроме того, убедитесь, что контроллер называется UserManagerController и выводится из Controller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...