2013-10-14 6 views
0

Было найдено несколько типов, которые соответствуют контроллеру с именем «Учетная запись». Это может произойти, если маршрут, обслуживающий этот запрос ('{controller}/{action}/{id}'), не определяет пространства имен для поиска контроллера, который соответствует запросу. Если это так, зарегистрируйте этот маршрут, вызвав перегрузку метода «MapRoute» enter image description here, который принимает параметр «пространства имен».Ошибка при развертывании приложения asp.net MVC4 в iis

ответ

0

У вас есть два класса AccountController. Один в P247.ComplianceTracker.MVC.Controllers и еще один в P247.CoachingTool.Mvc.Controllers.

Компонент (резольвер Зависимости), который разрешает контроллеры, делает это по соглашению. Это означает, что он ищет класс, который наследуется от Controller, и следует за соглашением об именах (AccountController, когда контроллер настроен на учет в запросе). Обе библиотеки имеют классы, соответствующие критериям (или в обоих пространствах имен существует класс, который соответствует этим критериям).

Так у вас есть несколько вариантов:

  1. переименовать одну из ваших AccountController классов
  2. изменить отображение (как предлагает ошибка)

В System.Web.Mvc.RouteCollectionExtensions является MapRoute расширение принимает список пространств имен в качестве параметра:

public static Route MapRoute (this RouteCollection routes, string name, string url, string[] namespaces);

Так что ваши регистрации могут быть изменены на что-то вроде этого:

routes.MapRoute (
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     namespaces: new string [] { "P247.CoachingTool.Mvc.Controllers" } 
); 

routes.MapRoute (
     name: "Default", 
     url: "compliance/{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     namespaces: new string [] { "P247.ComplianceTracker.MVC.Controllers" } 
); 

Запросов, направляемых на счет/индекса будут обрабатываться P247.CoachingTool.Mvc.Controllers.AccountController, запросы на comliance/счет/индекс по P247.ComplianceTracker.MVC.Controllers.AccountController.

Примечание: Urls действительно меняются, поэтому вам может потребоваться изменить некоторые разметки или вызовы вспомогательных функций.

Боковое примечание: код компилируется на моей машине, у меня нет сопоставимой настройки, но вам может потребоваться настроить вашу конкретную настройку.

Смежные вопросы