2010-07-21 7 views
3

J'ai une application mvc 2 asp.net (en utilisant .net 4.0) qui est routage pas correctement lorsque hébergé dans un répertoire virtuel. J'ai la règle de routage simple:ASP.NET MVC routage ne fonctionne pas dans le répertoire virtuel

 routes.MapRoute(
      "Default", // Route name 
      "{action}", // URL with parameters 
      new { controller = "accounts" } // Parameter defaults 
     ); 

J'essaie de résoudre http://mydomain.com/accounts/new. Où "accounts" est un répertoire virtuel. Si je mets l'application à la racine d'un site Web IIS il achemine pour fins http://mydomain.com/new, mais si je mets l'application dans un répertoire virtuel je reçois 404 erreurs. J'ai débogué et il exécute global.asax et configure le routage quand dans le vdir. Y at-il quelque chose de spécial que je dois faire pour le routage dans un répertoire virtuel?

FYI. J'utilise un vdir parce que la racine a wordpress dedans.

Merci!

une chose est que si je spécifie une action par défaut dans les valeurs par défaut des paramètres, il exécutera l'action par défaut/contrôleur, mais il ne correspond jamais à quoi que ce soit d'autre.

Répondre

1

I figured it out. Wordpress (que j'avais installé à la racine du site) a configuré des règles de réécriture d'URL qui empêchaient de mvc asp.net recevoir toute demande autre que la racine du répertoire virtuel. Tout ce qui avait un chemin au-delà était réécrit en index.php qui bien sûr n'existait pas dans mon application mvc.

J'ai supprimé la règle de réécriture, et maintenant tout fonctionne comme prévu.

0

ça marche si vous changez à:

routes.MapRoute( 
    "Default", // Route name 
    "accounts/{action}", // URL with parameters (BUT WITH ACCOUNTS PREFIX) 
    new { controller = "accounts" } // Parameter defaults 
); 
+0

pas qui ne fonctionne pas non plus. –

Questions connexes