Luk*_*ust 8 c# asp.net-mvc routing
当包含特定文件扩展名的路由时,我遇到了路由不匹配的问题.我怀疑它可能是一个IIS问题,但我似乎无法追踪它.
首先,我关闭了RouteExistingFiles:
routes.RouteExistingFiles = false;
Run Code Online (Sandbox Code Playgroud)
然后我有以下路线:
routes.MapRoute("", "category/{category}.aspx", new { controller = "Category", action = "View" });
Run Code Online (Sandbox Code Playgroud)
并且以下网址与此路线不匹配:
http://mysite/category/test.aspx
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除文件扩展名并将路由封装到:
routes.MapRoute("", "category/{category}", new { controller = "Category", action = "View" });
Run Code Online (Sandbox Code Playgroud)
然后上面的url匹配{category}被设置为"test.aspx"
我对这条路线也有同样的问题:
routes.MapRoute("sitemap", "sitemap.xml", new { controller = "Resource", action = "Sitemap" });
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我对所有带文件扩展名的路由都没有这个问题.以下路线似乎对我来说很好:
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" });
Run Code Online (Sandbox Code Playgroud)
是否有我应该注意的.aspx和.xml扩展名?这可能是IIS问题吗?有没有比使用RouteDebugger更好的方法来调试它?
您的问题是,如果 url 包含 .xml 或 .aspx,则请求不会定向到这些操作?
那么我想这应该是真的
routes.RouteExistingFiles = true;
Run Code Online (Sandbox Code Playgroud)
更新:
我针对在 IIS 7 中运行的站点使用以下路由在两种场景中进行了测试。
routes.MapRoute("sitemap", "{sitemap}.xml",
new { controller = "Resource", action = "Sitemap" });
Run Code Online (Sandbox Code Playgroud)
与RouteExistingFiles是假的,
在这种情况下,当 sitemap.xml 文件存在时,请求将定向到该文件,否则请求将定向到操作。
与RouteExistingFiles是真实的,
当 sitemap.xml 文件存在或不存在时,请求将被定向到操作。
| 归档时间: |
|
| 查看次数: |
3087 次 |
| 最近记录: |