MapRoute index.asp无法路由到控制器

时间:2019-05-17 08:37:54

标签: c# asp.net .net asp.net-mvc maproute

我有以下MapRoute可以正常工作并路由到控制器“ Hotel”

 routes.MapRoute("Hotel", "en/hotels/london/victoria/my_hotel_name/", 
            new { controller = "Hotel", action = "Index" }, namespaces: new[] { "UrlRouter.Router.Controllers" } );

但是,如果用户在路径中输入文件名index.asp,则它不会路由到控制器,而只是将实际内容加载到.ASP文件中,这是我不想要的。我希望它路由到控制器,以便我可以控制返回给用户的内容。

我尝试的路线是

routes.MapRoute("Hotel", "en/hotels/london/victoria/my_hotel_name/index.asp", 
            new { controller = "Hotel", action = "Index" }, namespaces: new[] { "UrlRouter.Router.Controllers" } );

1 个答案:

答案 0 :(得分:0)

经过进一步调查,我发现了以下作品。添加web.config

 <modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />

然后在注册路线中

    public static void RegisterRoutes(RouteCollection routes)
    {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.RouteExistingFiles = true;

        routes.MapRoute("Hotel", "en/hotels/london/victoria/my_hotel_name/{*.*}",
            new { controller = "Hotel", action = "Index", }, namespaces: new[] { "UrlRouter.Router.Controllers" });
     }

这使我可以将这两个URL都路由到酒店控制器并返回MVC视图

  

www.mydomain.com/zh-CN/hotels/london/victoria/my_hotel_name /

  

www.mydomain.com/zh-CN/hotels/london/victoria/my_hotel_name/index.asp

如果有人有更好的建议,请发表您的答案。