2009-11-20 85 views
6

出於某種原因,我的路由忽略了任何訪問我的MVC頁面的嘗試,並簡單地給我404s。我有一個Web窗體應用程序中設置瞭如下所示:將ASP.NET MVC混合到ASP.NET WebForms中

虛擬目錄:事情

所以我通常訪問我的網站,像這樣:

的我的ASP.NET WebForms應用程序的原始結構反映文件系統,所以我有文件夾滿.aspx文件,我需要能夠使用噸像那樣的下襬。出於某種原因,當我嘗試使用MVC路由訪問的頁面,例如:

我只是得到一個404錯誤。我自己使用了ASP.NET MVC,並且我知道即使沒有正確設置我的文件夾,我也不會得到404。我會得到無法找到頁面的原因,並提示文件應該在哪裏。以下是我的路由信息​​。我哪裏錯了?

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
    routes.MapRoute(
     "Default", 
     // Route name 
     "{controller}/{action}/{id}", 
     // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } 
     // Parameter defaults 
    ); 
} 

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

回答

2

你能告訴我你在運行什麼操作系統,以及這個站點是否在VS.NET Web Dev服務器或IIS下運行?

MVC中的路由將請求引導到Controller類,然後是特定的Action方法。你有一個名爲HomeController的類,名爲Index?

假設你有一個控制器,看着這個這個......

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

...那麼你提到的網址應該工作。但是,ASP.NET MVC會希望在您的vdir下的一個名爲Views \ Home或Views \ Shared的文件夾中找到與Home控制器關聯的任何視圖。在這種情況下,對於Index操作,它期望找到一個名爲Index.aspx(或.ascx)的視圖。但是,缺失的視圖通常不會導致404 - 通常是由於找不到控制器,找不到操作方法,或者在IIS 6上asp.net管道不在vdir的通配符設置中導致的。

更新:

你肯定你的web.config有MVC的HttpHandler到位(使MVC是在ASP.NET管道)。你應該有這樣的事情...

<add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

...你httpHandlers部分,這...

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

...在web.config中的你 '的HttpModules' 部分。

更新2:

基於您的意見,我懷疑你沒有得到在管道中的ASP.NET MVC代碼。你應該把你的網站。配置並將其與新創建的MVC站點中的一個進行比較,並查找缺失的配置項目。我已經提出了一對夫婦,但可能會有更多。

+0

Windows 7 x64 - II7.5 - 網站在IIS下運行。 我有約定。使用Index()方法調用HomeController的控制器。我也在視圖/主頁/稱爲索引中查看。 – 2009-11-20 20:23:57

+0

即使我沒有控制器和視圖,我也不會得到404,我會得到路由失敗的原因。這導致我相信路由被搞砸了。 – 2009-11-20 20:25:15

+0

你有沒有遇到任何斷點?事件查看器中的例外情況? – 2009-11-20 20:25:33