2009-11-20 15 views
6

Por alguna razón, mi enrutamiento está ignorando cualquier intento de acceder a mis páginas MVC y simplemente dándome 404s. Tengo unos formularios Web App establecieron como la siguiente:Mezclar ASP.NET MVC en ASP.NET WebForms

directorio virtual: Lo

por lo que suelen acceder a mi sitio, así:

El La estructura original de mi aplicación ASP.NET WebForms refleja el sistema de archivos, así que tengo carpetas llenas de archivos .aspx y necesito poder usar t hem así. Por alguna razón, cuando intento acceder a una página mediante el enrutamiento MVC tales como:

apenas consigo un error 404. He usado ASP.NET MVC por sí mismo y sé que incluso si no configuré mis carpetas correctamente, no obtendría un 404. Me gustaría obtener las razones por las cuales no se pudo encontrar la página y las pistas para donde deberían estar los archivos A continuación está mi información de enrutamiento. ¿Dónde estoy equivocado?

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); 
} 

Respuesta

2

¿Me puede decir qué sistema operativo se está ejecutando en este sitio y si se ejecuta en el servidor Web Dev VS.NET o IIS?

El enrutamiento en MVC dirige una solicitud a una clase de controlador y luego a un método de acción específico. ¿Tienes una clase llamada HomeController con un método llamado Index?

Suponiendo que tenían un controlador que parecía esta esto ...

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

... entonces el URL que usted ha mencionado debería funcionar. Sin embargo, ASP.NET MVC esperará encontrar cualquier vista asociada con el controlador Home en una carpeta llamada Views \ Home o Views \ Shared en su vdir. En este caso, para la acción Index, esperará encontrar una vista llamada Index.aspx (o .ascx). Sin embargo, una vista perdida no suele dar como resultado 404; esto suele deberse a que no se encuentra el controlador, no se encuentra el método de acción o en IIS 6 la tubería asp.net no está en la configuración de comodín para el vdir.

actualización:

¿Está seguro de su web.config tiene la MVC HttpHandler en su lugar (de modo que MVC se encuentra en la canalización de ASP.NET). Usted debe tener algo como esto ...

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

... en su sección httpHandlers y esto ...

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

... en su sección 'httpModules' de web.config.

actualización 2:

En base a sus comentarios que sospecha que no tiene el código de ASP.NET MVC en la tubería. Deberías llevar tu web.config y compáralo con uno de un sitio MVC recién creado y busca los elementos de configuración faltantes. He sugerido un par más arriba, pero podría haber más.

+0

Windows 7 x64 - II7.5 - El sitio funciona bajo IIS. Tengo las convenciones en su lugar. Un controlador llamado HomeController con un método Index(). También tengo una Vista en Vistas/Inicio/llamada Índice. –

+0

Incluso si no tuviera los controles y las vistas en su lugar, no obtendría un 404, obtendría los motivos por los que la ruta falló. Esto me lleva a creer que la ruta está en mal estado. –

+0

¿Alguna vez se golpea algún punto de interrupción? Excepciones en el visor de eventos? –

Cuestiones relacionadas