2012-05-14 119 views
1

我在mvc4應用程序中有2個區域,並且我已註冊每個區域的名稱空間。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}')沒有指定命名空間來搜索與該請求匹配的控制器,就會發生這種情況。如果是這種情況,請通過調用帶有'namespaces'參數的'MapRoute'方法的重載來註冊此路由。

我在做什麼錯?我需要做些額外的事情在根據您提供的代碼/說明在Global.asax

回答

2

,這聽起來像它可能是一個幾件事情:

  1. 你在有一個控制器名稱衝突根控制器命名空間(即,在項目根目錄下的Controllers文件夾中,而不是在一個區域中)和另一個沒有約束的區域。
  2. 更可能的是,您的第二個區域註冊Vend具有看起來不正確的命名空間。它應該是WebApplication.Areas.Vend.Controllers而不是WebApplication.Areas.MyController.Controllers。我敢打賭,根控制器名稱空間中有一個控制器與Vend區域中的某個控制器名稱共享控制器名稱。
相關問題