2010-01-20 145 views
2

我有一個Azure Web Role項目,最近由另一個開發人員MVC。根據開發人員的說法,這款應用程序在運行時沒有問題(即作爲簡單的網絡應用程序)。但是,當我嘗試在Azure雲服務的上下文中運行它時,出現了大量的404錯誤。我懷疑有些路由不太合適。下面是目前的RegisterRoutes方法是Global.asax.cs中的一部分的簡化版本:Azure中的ASP.NET MVC路由

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

routes.MapRoute(
     "Configuration", 
      "Configuration", 
      new { controller = "Configuration", action = "Index" } 
      ); 

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

當應用程序啓動時,將顯示從賬戶控制器的索引操作正確的觀點。但是,如果我嘗試導航到配置,我收到了404 Converesly如果我改變的方法是:

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

routes.MapRoute(
     "Account", 
      "Account", 
      new { controller = "Account", action = "Index" } 
      ); 

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

我從配置控制器的索引操作正確的觀點,但我不能前往帳戶視圖。

我猜這是一個簡單的問題來解決,但不知道到底是什麼做了「MVC」的Azure應用程序,並且是MVC的新手,讓我將我的頭撞到了牆上。

這裏的機器的配置在那裏我遇到了這個問題: Windows 7旗艦版與IIS 7.0 的Visual Studio 2008 SP1 ASP.NET MVC 1.0 的Windows Azure SDK 1.0

的思考?

回答

3

嘗試使用我的路由調試器。它可以幫助你瞭解正在發生的事情。 http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

奇怪的是,行爲與Azure本地不同。此外,你應該發佈你的控制器代碼(刪除操作方法的內容,我們只需要看到方法簽名)。

如果我不得不做一個瘋狂的猜測,我猜你的配置路線(在你給出的第一個例子中)需要在默認部分添加id =「」。

-1

我不認爲這是你的問題,但你可能會驗證System.Web.Mvc引用有其複製本地= true。

1

Haacked:謝謝你指點我的調試器。這幫助我在幾分鐘內追究這個問題。

答案比我想象的要簡單得多。這一切曾與下面的一行代碼做:

routes.IgnoreRoute("{Services}/{*pathInfo}"); 

我把該行來幫助解決我與ASP.NET MVC和WCF RIA服務(上here更多信息)有一個問題。大括號不應該在那裏。我不想取代服務。代碼應該看起來像這樣:

routes.IgnoreRoute("Services/{*pathInfo}"); 

您可以閱讀全文here