2010-01-20 6 views
2

J'ai un projet Azure Web Role qui a récemment été MVC par un autre développeur. Selon le développeur, l'application fonctionne sans problème lorsqu'elle est utilisée seule (c'est-à-dire en tant qu'application Web simple). Toutefois, lorsque j'essaie de l'exécuter dans le contexte du service de cloud Azure, je vois un certain nombre d'erreurs 404. Je soupçonne que quelque chose ne va pas avec le routage. Voici une version abrégée de la méthode RegisterRoutes actuelle qui fait partie de Global.asax.cs:Routage ASP.NET MVC dans Azure

public static void RegisterRoutes(RouteCollection routes){ 
routes.IgnoreRoute("{Services}/{*pathInfo}"); 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
     "Configuration", 
      "Configuration", 
      new { controller = "Configuration", action = "Index" } 
      ); 

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

Lorsque l'application démarre, la vue correcte de l'action Index du contrôleur de compte est affiché. Cependant, si je tente de naviguer à la configuration que je reçois un 404. Converesly si je change la méthode à ceci:

public static void RegisterRoutes(RouteCollection routes){ 
routes.IgnoreRoute("{Services}/{*pathInfo}"); 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
     "Account", 
      "Account", 
      new { controller = "Account", action = "Index" } 
      ); 

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

-je obtenir la vue correcte de l'action Index du contrôleur de configuration, mais je ne peux pas naviguer au compte vue. Je suppose que c'est un problème simple à résoudre, mais ne sachant pas exactement ce qui a été fait pour "MVC" l'application Azure et d'être nouveau à MVC m'a battu la tête dans le mur.

est ici la configuration de la machine où je rencontre ce problème: Windows 7 Édition Intégrale avec IIS 7.0 Visual Studio 2008 SP1 ASP.NET MVC 1.0 Windows Azure SDK 1.0

pensées?

Répondre

3

Essayez d'utiliser mon débogueur de routage. Cela peut vous aider à comprendre ce qui se passe. http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

Il est étrange que le comportement soit différent localement que dans Azure. En outre, vous devriez poster votre code de contrôleur (enlever le contenu des méthodes d'action, nous avons juste besoin de voir les signatures de la méthode).

Si je devais faire une conjecture, je suppose que votre route de configuration (dans le premier exemple que vous avez donné) doit ajouter id = "" dans la section par défaut.

-1

Je ne pense pas que ce soit votre problème, mais vous pouvez vérifier que la référence System.Web.Mvc a sa copie locale = true.

1

Haacked: Merci de m'avoir indiqué le débogueur. Cela m'a aidé à traquer la question en quelques minutes.

La réponse était beaucoup plus simple que je ne le pensais. Tout avait à voir avec la ligne de code suivante:

routes.IgnoreRoute("{Services}/{*pathInfo}"); 

Je mis cette ligne pour aider à résoudre un problème que je faisais avec ASP.NET MVC et services WCF RIA (plus d'informations sur ce here). Les accolades ne devraient pas être là. Je ne veux pas remplacer les services. Le code devrait ressembler à ceci:

routes.IgnoreRoute("Services/{*pathInfo}"); 

Vous pouvez lire une écriture-up complet here.