2012-05-14 2 views
1

У меня есть 2 области в приложении mvc4, и я зарегистрировал пространство имен для каждой из областей.MVC4 маршрутизации 2 области, содержащие контроллеры с тем же именем

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Intergration_default", 
      "Intergration/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional }, 
       constraints: null, 
      namespaces: new[] { "WebApplication.Areas.Intergration.Controllers" } 

     ); 

    } 
    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Vend_default", 
      "Vend/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional}, 
       constraints: null, 
      namespaces: new[] { "WebApplication.Areas.MyController.Controllers" } 

     ); 

я могу получить доступ ИНТЕГРАЦИИ/MyController Однако, когда я пытаюсь доступом MyController я получаю сообщение об ошибке были найдены

несколько типов, которые соответствуют контроллеру с именем «mycontroller». Это может произойти, если маршрут, обслуживающий этот запрос ('{controller}/{action}/{id}'), не определяет пространства имен для поиска контроллера, который соответствует запросу. Если это так, зарегистрируйте этот маршрут, вызвав перегрузку метода «MapRoute», который принимает параметр «namespaces».

Что я делаю неправильно? мне нужно сделать что-то дополнительное в global.asax

ответ

2

на основе кода/описание вы предусмотрели, это звучит, как это может быть несколько вещей:

  1. У вас есть столкновение имя контроллера в (т.е. в папке Controllers в корне проекта, а не в области) с другой областью без ограничений.
  2. Скорее всего, ваша вторая область регистрации для Vend имеет то, что выглядит как неправильное пространство имен. Вместо WebApplication.Areas.MyController.Controllers это должно быть WebApplication.Areas.Vend.Controllers. Уверен, что в вашем пространстве имен корневых контроллеров есть контроллер, который имеет имя контроллера с чем-то в области Vend.
Смежные вопросы