2011-07-02 54 views
3

我有一個內置了幾個區域的MVC 3應用程序,其中一個區域是我的網站的管理部分。一切都很好。我想嘗試使用MvcContrib Portable Areas來使我的應用程序更加模塊化,因此我安裝了MvcContrib,經過一些試驗和錯誤之後,我得到了一些便攜式區域並開始運行。疑難解答「無法找到資源。」錯誤

然後我決定將我的管理區域移動到一個便攜式區域,所以我創建了新項目並將我的管理員便攜區域挖出。我不得不重命名我的本地管理員區域,以免發生衝突。在將一些代碼移動到管理員PA時,我決定不想讓所有Telerik和其他東西連接到我的管理員區域。所以我把東西移回到主項目區域並刪除了管理PA。

我重新接線了我的管理區域,並且重新設置了一個區域。現在對我來說,我無法在我的主項目中加載任何區域來加載。我一直收到「無法找到資源」。錯誤信息。

我甚至去除了對MvcContrib和Portable Areas的引用,但仍然沒有運氣。由於我不知道如何進行調試,因此我處於繩索的末端。我使用了一個自定義的路由處理函數以及Glimpse,但是在引發錯誤時這兩個函數都不是非常有用。

這裏是我的Global.asax路線

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
      null, 
      new string[] { "CoolProject.Web.Controllers" } 
     ); 

這裏是我的管理區登記文件

context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      new string[] { "CoolProject.Web.Areas.Admin.Contollers" } 
     ); 

這裏的路徑是我的Global.asax

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
      new string[] { "CoolProject.Web.Controllers" } 
     ); 

    } 

    protected void Application_Start() 
    { 

     AreaRegistration.RegisterAllAreas(); 
     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
     InitializeContainer(); 
     AppStart_Structuremap.Start(); 

     SiteMapManager.SiteMaps.Register<XmlSiteMap>("AdminNavigation", sitemap => sitemap.LoadFrom("/Areas/Admin/AdminNavigation.sitemap")); 

    } 

我已經在類似的工作站點上檢查了我的設置,並且除了命名空間和類之外,所有內容都是相同的ES。

我在Win 7開發IIS7.5

使用掠影路線插件,我可以看到路由是否存在,但問題是,在我的Global.axas文件的路徑接管所有的請求的區域。

我需要怎樣處理我的路線才能讓核心應用程序和區域相處?有趣的是我有另一個生產應用程序使用工作正常的區域。

更新....

我創建了一個新的MVC 3項目,新增名爲Admin的一個區域。然後,我編輯了AdminAreaRegistration.cs和Global.asax文件,以在MapRoute語句中包含名稱空間,編譯它並完美運行。我可以訪問該地區沒有問題。

然後,我將Global.asax和AdminAreaRegistration.cs與破損項目中的文件進行比較,它們是相同的。這不是我設置路線的問題,我認爲還有另一個問題我沒有看到。

+0

請參閱http://stackoverflow.com/questions/9293778/asp-net-mvc-resource-cannot-be-found-error不同的問題 – Lijo

回答

3

你打電話

AreaRegistration.RegisterAllAreas();

上的Application_Start在Global.asax中

?你用什麼服務器來開發卡西尼,IISExpress,IIS?查看更詳細的信息後

編輯。

在你的管理區註冊文件,如果你有這樣的代碼

context.MapRoute(
     "Admin_default", 
     "Admin/{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new string[] { "CoolProject.Web.Areas.Admin.Contollers" } 
    ); 

我覺得有一個錯字在「CoolProject.Web.Areas.Admin.Contollers」,它應該是「CoolProject.Web.Areas .Admin.Controllers「?

+0

看到我的更新,我添加了我的global.asax,操作系統和Web服務器信息。 – JBeckton

+0

好,謝謝,更新審覈您的信息後,我的答案。 – Grant

+0

聖脂肪手指!你釘了它!我完全錯過了。有時候,第二雙眼睛會有很大的幫助。這就是爲什麼我們非常喜歡魔術弦! – JBeckton

1

確保命名空間是正確的在你的控制器,也是如此。如果你從另一個MVC應用程序,例如複製MVC組件創建新的區域(像我一樣),人們很容易忘記更改命名空間!

+0

它幫助我,謝謝你! – Farzaneh