【问题标题】:ASP MVC Route not firingASP MVC 路由未触发
【发布时间】:2013-05-20 23:28:50
【问题描述】:

让我的路由正常工作时遇到了一些麻烦。我需要支持 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" }
        );

有人知道这是什么原因吗?

提前致谢, 瑞恩。

【问题讨论】:

    标签: asp.net asp.net-mvc routes


    【解决方案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 }
                );            
            }
    

    它工作正常。请在您的应用程序中尝试这些代码。

    【讨论】:

      【解决方案2】:

      IIS 可能将请求视为静态文件,或者另一个处理程序正在接收和处理请求。

      如果是这种情况,您需要为 IIS 中的 .mvc 扩展添加一个处理程序映射,并确保它使用的是 ASP.NET。

      【讨论】:

        猜你喜欢
        • 2014-04-14
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        相关资源
        最近更新 更多