2009-11-20 6 views
6

Pour une raison quelconque, mon routage ignore toute tentative d'accès à mes pages MVC et me donne simplement des 404. J'ai WebForms d'app mis en place comme suit:Mixage d'ASP.NET MVC dans ASP.NET WebForms

Répertoire virtuel: chose

J'accéder habituellement mon site comme ceci:

Le la structure originale de mon application ASP.NET WebForms reflète le système de fichiers, donc j'ai des dossiers pleins de fichiers .aspx et je dois pouvoir utiliser t ourler comme ça. Pour une raison quelconque lorsque je tente d'accéder à une page en utilisant le routage MVC tels que:

Je viens d'obtenir une erreur 404. J'ai utilisé ASP.NET MVC seul et je sais que même si je n'ai pas configuré correctement mes dossiers, je n'aurais pas de 404. Je trouverais les raisons pour lesquelles la page n'a pu être trouvée où les fichiers devraient être. Voici mes informations de routage. Où vais-je mal?

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

Répondre

2

Pouvez-vous me dire quel système d'exploitation que vous utilisez sur et si ce site est en cours d'exécution sous VS.NET serveur Web Dev ou IIS? Le routage dans MVC dirige une requête vers une classe Controller, puis une méthode Action spécifique. Avez-vous une classe nommée HomeController avec une méthode nommée Index?

En supposant que vous aviez un contrôleur qui a regardé cette ... cette

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

... l'URL que vous avez mentionné devrait fonctionner. Cependant, ASP.NET MVC s'attend à trouver toutes les vues associées au contrôleur Home dans un dossier nommé Views \ Home ou Views \ Shared sous votre vdir. Dans ce cas, pour l'action Index, il s'attend à trouver une vue nommée Index.aspx (ou .ascx). Toutefois, une vue manquante n'aboutit généralement pas à 404, généralement parce que le contrôleur n'a pas été trouvé, la méthode d'action n'a pas été trouvée ou, sur IIS 6, le pipeline asp.net ne figure pas dans les paramètres génériques du vdir.

mise à jour:

Êtes-vous sûr que votre web.config a mis en place le MVC HttpHandler (de sorte que MVC est dans le pipeline ASP.NET). Vous devriez avoir quelque chose comme ça ...

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

... dans votre section httpHandlers et ce ...

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

... dans votre section 'httpModules' de web.config.

mise à jour 2:

Sur la base de vos commentaires, je pense que vous ne l'avez pas obtenu le code ASP.NET MVC dans le pipeline. Vous devriez prendre votre web.config et comparez-le avec celui d'un site MVC fraîchement créé et recherchez les éléments de configuration manquants. J'ai suggéré un couple ci-dessus, mais il pourrait y en avoir plus.

+0

Windows 7 x64 - II7.5 - Le site fonctionne sous IIS. J'ai les conventions en place. Un contrôleur appelé HomeController avec une méthode Index(). J'ai aussi un View in Views/Home/appelé Index. –

+0

Même si je n'avais pas les contrôleurs et les vues en place, je n'aurais pas de 404, j'aurais des raisons pour lesquelles l'itinéraire a échoué. Cela m'amène à croire que le routage est foiré. –

+0

Des points d'arrêt sont-ils touchés? Exceptions dans le visionneur d'événements? –

Questions connexes