Asp.net mvc 2 Mono MVC 2 home route不';行不通

Asp.net mvc 2 Mono MVC 2 home route不';行不通,asp.net-mvc-2,routing,mono,nginx,Asp.net Mvc 2,Routing,Mono,Nginx,我正在尝试将ASP.NETMVC2应用程序转换为在nginx/mono2.8上运行。到目前为止,除了路径为空时默认路由不起作用外,它似乎工作得很好。我将所有请求代理到fastcgi服务器,并得到一个ASP.NET404NotFound页面 i、 这不管用 http://mysite.com 但这是真的 http://mysite.com/home 我的Global.asax.cs文件如下所示 using System; using System.Collections.Generic; us

我正在尝试将ASP.NETMVC2应用程序转换为在nginx/mono2.8上运行。到目前为止,除了路径为空时默认路由不起作用外,它似乎工作得很好。我将所有请求代理到fastcgi服务器,并得到一个ASP.NET404NotFound页面

i、 这不管用

http://mysite.com
但这是真的

http://mysite.com/home
我的Global.asax.cs文件如下所示

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);
        }
    }
}
编辑:
有关我的设置的更多信息。如果这有什么不同的话,我正在运行OSX10.6。MVC项目中任何区域的默认路由也存在同样的问题。

您是否遵循了本页中的nginx配置?:


我的猜测是默认文档正在妨碍我。

我实际上遇到了同样的问题,并且完全错误地解决了它(至少在我的情况下是这样)

在mono项目的站点上,它显示在nginx.conf文件中输入以下行:

index index.html index.htm default.aspx Default.aspx;
fastcgi_index Default.aspx;
嗯,我在两个虚拟机上以完全相同的方式(或者我认为是这样)设置它。问题是,一个虚拟机有它的根url工作,而另一个没有。结果是,我忘记了VM上工作的“index”行上的分号,因此“fastcgi_index”行被解释为“index”行的一部分


所以在不起作用的虚拟机上,我去掉了分号。你猜怎么着?成功了。然后我添加了分号,完全删除了“fastcgi_index”行,它仍然有效。因此,基于这些轶事证据和一些猜测,我认为“fastcgi_索引”行不应该包含在MVC应用程序中。嗯,至少MVC 3,我还没有测试过其他任何东西。

这样的路线有用吗
routes.MapRoute(“根”,“/”,new{controller=“Home”,action=“Index”})
是的,添加这样的特定路由确实有效,但我不希望这样做,因为IIS和MVC不需要它。我不确定Mono或我的Nginx设置是否有问题。同意。这不是你想要做的,这是完全愚蠢的,但是如果你在路由url中添加一个开始斜杠:“/{controller}/{action}/{id}”,该怎么办呢。我能想到的唯一一件事就是考虑@Alex的建议在技术上是可行的,而你的区域默认路线也不可行(这意味着你的默认文档应该不会有问题)