内容简介:翻译自:https://stackoverflow.com/questions/10819200/asp-net-mvc-routing-not-matching-some-file-extensions
当包含特定文件扩展名的路由时,我遇到了路由不匹配的问题.我怀疑它可能是一个IIS问题,但我似乎无法追踪它.
首先,我关闭了RouteExistingFiles:
routes.RouteExistingFiles = false;
然后我有以下路线:
routes.MapRoute("", "category/{category}.aspx", new { controller = "Category", action = "View" });
并且以下网址与此路线不匹配:
http://mysite/category/test.aspx
但是,如果我删除文件扩展名并将路由封装到:
routes.MapRoute("", "category/{category}", new { controller = "Category", action = "View" });
然后上面的url匹配{category}被设置为“test.aspx”
我对这条路线也有同样的问题:
routes.MapRoute("sitemap", "sitemap.xml", new { controller = "Resource", action = "Sitemap" });
奇怪的是,我对所有带文件扩展名的路由都没有这个问题.以下路线似乎对我来说很好:
routes.MapRoute("", "favicon.ico", new { controller = "Resource", action = "Favicon" });
routes.MapRoute("", "min.css", new { controller = "Resource", action = "Css" });
routes.MapRoute("", "min.js", new { controller = "Resource", action = "JavaScript" });
routes.MapRoute("", "rsd.xml", new { controller = "MetaWeblog", action = "Rsd" });
是否有我应该注意的.aspx和.xml扩展名?这可能是一个IIS问题吗?调试这个比使用 RouteDebugger 更好的方法吗?
您的问题是,如果网址包含.xml或.aspx,则请求不会定向到这些操作吗?
然后我想这应该是真的,
routes.RouteExistingFiles = true;
更新:
我在两个方案中测试了以下路由,以便在IIS 7中运行的站点.
routes.MapRoute("sitemap", "{sitemap}.xml",
new { controller = "Resource", action = "Sitemap" });
使用RouteExistingFiles为false,
在这种情况下,当sitemap.xml文件存在时,请求将定向到该文件,否则请求将定向到该操作.
使用RouteExistingFiles是真的,
当sitemap.xml文件存在或不存在时,请求始终指向该操作.
翻译自:https://stackoverflow.com/questions/10819200/asp-net-mvc-routing-not-matching-some-file-extensions
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
中国制造2025:产业互联网开启新工业革命
夏妍娜、赵胜 / 机械工业出版社 / 2016-2-22 / 49.00
过去20年,是中国消费互联网肆意生长的"黄金20年",诞生了诸如BAT等互联网巨头,而时至今日,风口正逐渐转向了产业互联网。互联网这一摧枯拉朽的飓风,在改造了消费服务业之后,正快速而坚定地横扫工业领域,拉开了产业互联网"关键30年"的大幕。 "中国制造2025"规划,恰是中国政府在新一轮产业革命浪潮中做出的积极举措,是在"新常态"和"供给侧改革"的背景下,强调制造业在中国经济中的基础作用,认......一起来看看 《中国制造2025:产业互联网开启新工业革命》 这本书的介绍吧!