我的mvc 2应用程序为除主页之外的所有页面提供404

时间:2011-08-23 15:39:47

标签: c# asp.net-mvc-2 iis-6

我有一个在测试环境和生产服务器的ii6中运行的mvc 2应用程序。

测试环境运行得很好,但在转移到生产后,除主页服务器之外的所有页面都出现了404错误。

我已经按照步骤2,在这里:http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/并在路由中添加了.aspx扩展名,并尝试了通配符映射。它似乎没有任何区别。

我将此处的诊断文件http://bradwilson.typepad.com/blog/2010/03/diagnosing-aspnet-mvc-problems.html放入目录并加载它,但它没有报告任何错误或问题。

我甚至擦了测试服务器并从scractch重新安装了应用程序,设置了通配符映射,它工作正常。

现在页面的路由如下:Home.aspx/About,我的路由表如下所示:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}.aspx/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
    routes.MapRoute(
        "NewEmployee",
        "{controller}.aspx/{action}",
        new { controller = "NewEmployee", action = "Index" }
    );
    routes.MapRoute(
        "Admin",
        "{controller}.aspx/{action}",
        new { controller = "Admin", action = "Index" });
    routes.MapRoute(
        "AccessMaster",
        "{controller}.aspx/{action}/{id}/{subid}",
        new { controller = "AccessMaster", action = "Index", id=UrlParameter.Optional,subid=UrlParameter.Optional });

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

}

我在这里不知所措。难道我做错了什么?服务器有问题吗?

2 个答案:

答案 0 :(得分:1)

尝试使用以下命令在IIS中注册ASP.NET:

aspnet_regiis /i

还要确保在IIS(Web Service Extensions文件夹)中启用了正确版本的ASP.NET:

enter image description here

您还有许多不必要的路线路线。例如,NewEmployeeAdmin路由完全等效,这意味着只匹配此列表中的第一个路由。但这是另一个问题,它与您获得的部署错误无关。一旦您的应用程序成功运行,您就可以修复路由。

答案 1 :(得分:0)

看起来删除并重新创建虚拟目录,神奇地修复了它的错误。

相关问题