我在使路由正常工作时遇到了一些麻烦。我需要支持IIS 5.1,所以我想用.mvc后缀控制器,这是我目前所拥有的:
routes.MapRoute(
name: "Default",
url: "{controller}.mvc/{action}",
defaults: new { controller = "App", action = "Home" }
);
这失败了。如果我删除.mvc,它按预期工作。此外,奇怪的是,如果我在控制器和动作之间添加另一条路径,它就可以工作。像这样:
routes.MapRoute(
name: "Default",
url: "{controller}.mvc/Anything/{action}",
defaults: new { controller = "App", action = "Home" }
);
有谁知道这个的原因?
提前致谢, 莱恩。
答案 0 :(得分:1)
我尝试使用以下代码
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "DefaultWithExtension",
url: "{controller}.mvc/{action}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
它正常工作。请在您的申请中尝试这些代码。
答案 1 :(得分:0)
IIS可能将请求视为静态文件,或者另一个处理程序正在接收和处理请求。
如果是这种情况,您需要在IIS中为 .mvc 扩展添加处理程序映射,并确保它使用ASP.NET。