2009-10-12 8 views
3

Je reçois cette erreur seulement PARFOIS (apparemment aléatoirement, bien que je sache qu'il n'y a vraiment rien de tel dans les ordinateurs).MVC: "La requête entrante ne correspond à aucun itinéraire." - avec une demande par défaut

Je travaille sur un site MVC (version 1) dans VS 2008. La machine fonctionne sous Windows 7 avec IIS 7, mais cette instance fonctionne sous le serveur Web intégré dans VS (Cassini?). Quand je fais un F5 pour commencer à courir, je vais parfois obtenir un piège d'exception à la 4e ligne de la méthode Page_Load de Default.aspx.cs:

httpHandler.ProcessRequest(HttpContext.Current); 

La méthode d'exception est la suivante: La requête entrante ne correspondre à n'importe quel itinéraire.

L'examen de l'objet HttpContext.Current.Request montre un chemin de "/" et une rawUrl de "/Default.aspx?" - c'est-à-dire, votre demande vide normale à un site.

La routine MapRoutes est assez standard à l'exception de quelques lignes IgnoreRoutes (ignorer "pics/{* imgfile}", et ignorer "{* favicon}"). La routine Application_Start a la configuration pour un StructureMap, et un appel à SetControllerFactory avant l'appel à RegisterRoutes, mais par ailleurs standard.

Habituellement, si je redémarre VS, le problème disparaît. (Et presque toujours si je redémarre la machine).

Des indices?

Merci.

+1

IIS6 ou 7? Cassini? – annakata

+0

J'ai rassemblé plus de données et compris les circonstances dans lesquelles cela se produit (ce n'est pas aléatoire après tout). Mais je n'ai toujours pas la connexion. Si je tente de déboguer le programme dans VS et que le serveur SQL n'est pas en cours d'exécution sur ma machine, le programme génère une exception dans StructureMap, ce qui est compréhensible et prévisible. Si j'arrête le débogueur, démarrez le serveur SQL et réexécutez le programme, c'est à ce moment que ces erreurs se produisent. Je ne reçois toujours pas la connexion, mais au moins je sais quoi faire pour l'empêcher de se produire (fermer VS, démarrer le serveur SQL et redémarrer). –

+0

Dave - Avez-vous déjà découvert ce qui causait cela? Je me fais exactement la même chose m'arrive. J'ai mis un point d'arrêt dans Global.asax: Application_Start() - le point d'arrêt n'est pas touché. –

Répondre

1

Définir une page par défaut. F5 dans asp.net lancera à n'importe quelle page est choisie. Cependant, puisque dans MVC, votre View peut ou non avoir une fonction de contrôleur associée, il peut essayer d'appeler une action qui n'existe pas. Ouvrez vos propriétés de projet et définissez la page de démarrage de débogage à l'action de votre contrôleur de site principal.

+0

Russell, Merci d'avoir pris le temps de répondre. Il existe un jeu de pages par défaut, et c'est le code-behind standard pour cette page par défaut (Default.aspx.cs) qui exécute et lance l'exception. Il existe un ensemble de projets de démarrage, et toutes les actions existent, en particulier l'action par défaut (controller = home, action = index).Puisque cela fonctionne la plupart du temps et échoue seulement par intermittence, il est difficile de voir comment cela pourrait être le problème. –

0

Désolé mon mauvais anglais ...

J'ai eu ce problème aussi! Mystérieusement la méthode Application_Start qui appelle les routes a disparu dans le Global.asax !!

vb.net:

Sub Application_Start() 
    RegisterRoutes(RouteTable.Routes) 
End Sub 

mettre cette méthode en global.asax si elle n'existe pas

Questions connexes