2010-10-08 4 views
8

J'essaie de convertir une application ASP .NET MVC 2 pour fonctionner sur nginx/mono 2.8. Jusqu'à présent, il semble fonctionner assez bien, sauf que la route par défaut ne fonctionne pas lorsque le chemin est vide. J'interroge toutes les demandes par le biais du serveur fastcgi et je reçois une page ASP .NET 404 non trouvée.Mono MVC 2 route ne fonctionne pas

-à-dire cela ne fonctionne pas

http://mysite.com 

Mais cela ne

http://mysite.com/home 

Mon fichier Global.asax.cs ressemble à ce

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text.RegularExpressions; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Routing; 

namespace MyProject 
{ 
    public class MvcApplication : System.Web.HttpApplication 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      // Default route 
      routes.MapRoute(
       "Default",      // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
       new string[] {"MyProject.Controllers"} 
      ); 
     } 

     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      RegisterRoutes(RouteTable.Routes); 
     } 
    } 
} 

EDIT: Quelques infos sur ma configuration. Je cours OS X 10.6 si cela fait une différence. Le même problème existe également pour l'itinéraire par défaut des zones dans le projet MVC.

+0

Un itinéraire comme celui-ci aide-t-il? 'routes.MapRoute (" Root ","/", new {controller =" Accueil ", action =" Index "})' –

+0

Oui, l'ajout d'un itinéraire spécifique fonctionne mais je préfère ne pas le faire comme IIS et MVC ne l'exige pas. Je ne suis pas sûr si c'est un problème avec Mono ou mon installation Nginx. – Alex

+0

D'accord. Ce n'est pas ce que tu veux faire. –

Répondre

5

En fait, je suis tombé sur le même problème et résolu (au moins dans ma situation) par erreur complète ...

Dans le nginx walkthrough sur le site du projet mono, il est dit d'entrer dans ces lignes dans votre nginx. fichier de configuration:

index index.html index.htm default.aspx Default.aspx; 
fastcgi_index Default.aspx; 

Eh bien, je mis cela dans la même manière exacte (ce que je pensais) sur deux machines virtuelles. Le problème est, une VM avait son travail d'URL racine et l'autre pas. Ce qui s'est avéré être, c'est que j'ai oublié le point-virgule sur la ligne 'index' sur la VM qui fonctionnait, de sorte que la ligne 'fastcgi_index' a été interprétée comme faisant partie de la ligne 'index'.

Donc, sur la machine virtuelle qui ne fonctionnait pas, j'ai supprimé ce point-virgule. Et devine quoi? Ça a marché. Alors j'ai ajouté le point-virgule et j'ai complètement supprimé la ligne 'fastcgi_index' et ça a toujours fonctionné. Donc, sur la base de ces preuves anecdotiques et de certaines hypothèses, je dirais que la ligne 'fastcgi_index' ne devrait pas être incluse dans les applications MVC. Eh bien, au moins MVC 3, je n'ai pas testé autre chose.

+0

Génial qui a fait l'affaire! – Alex

1

Avez-vous suivi la configuration nginx de cette page ?: http://www.mono-project.com/FastCGI_Nginx

Je pense serait le document par défaut est de prendre le chemin.

+0

Oui, j'ai exactement cette configuration. Et cela ne fonctionne toujours pas :( – Alex

+0

C'est totalement stupide, mais que faire si vous ajoutez une barre oblique au début de l'itinéraire: "/ {controller}/{action}/{id}" .Seule chose que je peux penser à considérer @ Les suggestions d'Alex fonctionnent techniquement, et les routes par défaut de votre région ne fonctionnent pas non plus (ce qui signifie que votre document par défaut ne devrait pas poser de problème) –

Questions connexes