2009-08-28 8 views
1

Je suis encore nouveau sur ASP.NET MVC et je me bats un peu avec le routage.Dans ASP.NET MVC, pourquoi ai-je des erreurs 404 après la publication de mon site Web?

En utilisant le serveur de développement ASP.NET (exécuté directement à partir de Visual Studio), mon application peut trouver ses vues sans aucun problème. L'URL ASP.NET standard est utilisé - http://localhost:1871/InterestingLink/Register

Cependant, quand je publie mon site à IIS et y accéder via http://localhost/MyFancyApplication/InterestingLink/Register, je reçois une erreur 404.

Des suggestions sur ce qui pourrait ne pas fonctionner?

Plus d'info ...

Voici ce que mon fichier global.asax ressemble (standard):

public class MvcApplication : System.Web.HttpApplication 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*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); 
     } 
    } 

Mon contrôleur est également très simple:

public class InterestingLinkController : Controller 
{ 
    public ActionResult Register() 
    { 
     return View("Register"); 
    } 
} 

Répondre

2

Je compris ce qui était faux. Le problème était en fait que IIS5 (dans Windows XP) ne lance pas ASP.NET lorsque l'URL ne contient pas de .ASPX. Le moyen le plus simple de contourner ce problème est d'ajouter un '.aspx' à votre section de contrôleur dans global.asax. Par exemple:

routes.MapRoute(
       "Default",            
       "{controller}.aspx/{action}/{id}",      
       new { controller = "Home", action = "Index", id = "" } 
      ); 

Pas joli, mais il le fera.

1

Beaucoup de les choses pourraient être fausses:

  • Est-ce que l'IIS Répertoire virtuel & L'application est-elle définie correctement?
  • L'application ASP.NET est-elle appelée? (Ajouter une exploitation forestière/breakpoiont dans Application_Start et Application_BeginRequest)

Juste pour commencer. Vous allez devoir appliquer les approches de débogage habituelles.

(Pour éviter les problèmes comme celui-ci, je l'utilise rarement le serveur de développement et il suffit d'utiliser IIS tout le temps. Chose la plus difficile est de se rappeler d'exécuter VS élevé à chaque fois)

Questions connexes