2009-11-20 129 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