首页 新闻 会员 周边 捐助

升级到 aspnet core 2.1 之后 route 无法匹配带有文件后缀(.html)的请求

0
悬赏园豆:10 [已解决问题] 解决于 2018-06-04 16:08

route template:

routes.MapRoute("IndexPage",
                "feed/{page}.html",
                new { controller = "User", action = "Index" }
            );

请求地址:http://www.abc.com/feed/2.html,无法匹配上述路由。

SetCompatibilityVersion(CompatibilityVersion.Version_2_1)已经添加了。

请问是什么原因?

蝌蝌的主页 蝌蝌 | 初学一级 | 园豆:158
提问于:2018-06-01 15:45
< >
分享
最佳答案
0

定位问题的步骤:首先受到 aspnetcore 2.1 升级文档的启发,先从sln中移出了Web项目,然后删除了该项目下所有的文件,使用dotnet new mvc新建一个项目,添加路由 feed/{page}.html,测试结果是可以正常匹配的。

于是,逐步恢复原来的内容,先是 csproj 中的引用,结果引用一恢复,就无法匹配了,接下来一步一步的缩小范围,最后定位到是由于引用了一个内部的 nuget造成的问题,删除这个引用即可正常匹配了。

蝌蝌 | 初学一级 |园豆:158 | 2018-06-04 16:08
其他回答(1)
0

我用asp.net core 2.1新建了一个mvc项目,测试上面的路由是可以正常工作的

app.UseMvc(routes =>
{
    routes.MapRoute("IndexPage",
        "feed/{page}.html",
        new { controller = "Home", action = "Index" }
    );

    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
收获园豆:10
dudu | 园豆:29570 (高人七级) | 2018-06-01 15:59

如果使用了razor page,这里的{page}会与razor page的路由冲突

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2018-06-05 14:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册