C# 我的MVC2应用程序为除主页之外的所有页面提供404服务

C# 我的MVC2应用程序为除主页之外的所有页面提供404服务,c#,asp.net-mvc-2,iis-6,C#,Asp.net Mvc 2,Iis 6,我有一个MVC2应用程序,它在测试环境和生产服务器中以ii6运行 测试环境运行正常,但在转移到生产环境之后,除了主页服务器之外的所有页面都出现了404个错误 我在这里遵循了步骤2:并向路由添加了.aspx扩展名,并尝试了通配符映射。这似乎没有什么区别 我将在这里找到的诊断文件放入目录并加载,但它不会报告任何错误或问题 我甚至删除了测试服务器,从scractch重新安装了应用程序,设置了通配符映射,效果很好 现在页面的路由方式如下:Home.aspx/About,我的路由表如下所示: public

我有一个MVC2应用程序,它在测试环境和生产服务器中以ii6运行

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

我在这里遵循了步骤2:并向路由添加了.aspx扩展名,并尝试了通配符映射。这似乎没有什么区别

我将在这里找到的诊断文件放入目录并加载,但它不会报告任何错误或问题

我甚至删除了测试服务器,从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 = "" }
    );

}

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

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

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


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

删除并重新创建虚拟目录似乎神奇地修复了任何错误。

我认为您有很多重叠路由。删除“默认”之后的所有内容如何?但是在发布准确的错误消息时,您可能丢失了1个或多个文件。谢谢,我没有意识到这一点。你认为这可能是造成问题的原因吗?它无法解释为什么它在测试服务器中工作正常。唯一的错误消息是服务器在除基本虚拟目录地址之外的任何地方发出的404响应代码。任何路由类似于
home/about
的路由都返回404。您的home.Index.aspx是否与其他视图位于同一文件夹中?
views\home\Index.aspx
views\home\about.aspx
位于同一文件夹中,是的。两台服务器上均未安装NET4。该项目是在3.5客户端框架上使用mvc2构建的。Asp.net v2.0.50727设置为允许,如上所述。运行重新注册程序会影响服务器上的任何其他应用程序吗?我不能做任何可能导致其他应用程序中断的事情。@asawyer,它将回收它们。明白了。你认为这会有帮助吗?现在有另一个2.0 clr应用程序正在运行,没有任何问题。@asawyer,不确定。这只是我脑海中浮现的东西。到目前为止,我还不是配置IIS的专家。如果您在配置web服务器时遇到问题,您的问题可能更适合您。StackOverflow更适合于解决您似乎没有的编程问题。