我有一个在测试环境和生产服务器的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 = "" }
);
}
我在这里不知所措。难道我做错了什么?服务器有问题吗?
答案 0 :(得分:1)
尝试使用以下命令在IIS中注册ASP.NET:
aspnet_regiis /i
还要确保在IIS(Web Service Extensions文件夹)中启用了正确版本的ASP.NET:
您还有许多不必要的路线路线。例如,NewEmployee
和Admin
路由完全等效,这意味着只匹配此列表中的第一个路由。但这是另一个问题,它与您获得的部署错误无关。一旦您的应用程序成功运行,您就可以修复路由。
答案 1 :(得分:0)
看起来删除并重新创建虚拟目录,神奇地修复了它的错误。