ASP中的自定义路由约束问题.净MVC
本文关键字:问题 MVC 约束 路由 自定义 ASP | 更新日期: 2023-09-27 18:06:57
我正在浏览Pro ASP中的"磁盘文件路由请求"部分。NET MVC 3的书,我面临着一个奇怪的问题,有关自定义路由约束。
我创建了一个自定义路由:
//82:1. this is added so that below routes are checked first before checking the disk files.
routes.RouteExistingFiles = true;
//82:2 the custom route which maps requests to Static/StaticContent.htm to route /Home/Content, only from IE.
routes.MapRoute("DiskFile", "Content/StaticContent.htm",
new { controller = "Home", action = "Content" },
new {customConstraint = new UserAgentConstraint("IE")},
new[] { "UrlsAndRoutes.Controllers" });
书上说这个路由将允许IE用户查看Home/Content路由,非IE用户直接查看Content/StaticContent.htm。它不是为我工作的方式。
下面是发生的事情:
- 我运行应用程序并在IE中打开URL
http://localhost:50483/Content/StaticContent.htm
,并被重新路由到/Home/Content - 然后我在Chrome中打开URL
http://localhost:50483/Content/StaticContent.htm
,并显示StaticContent.htm 的原始内容 - 然后切换到IE并按
Ctrl-R
(刷新)或在URL栏中选择URL并按Enter
并路由到StaticContent.htm的原始内容(为什么?) - 如果我按
Ctrl-F5
,然后,我被重新路由到/Home/Content (wut?)
是不是路由应该发送IE用户,谁试图访问Content/StaticContent.htm,总是到/Home/Content?
PS:我重新启动了Visual Studio,也删除了IE上的浏览器历史记录,但问题仍然存在。
UserAgentConstraint.cs
在Global.asax.cs
可能正在缓存
Ctrl+F5使它要求服务器重新加载,即使内容没有改变。
听起来这是正确的行为。
通过在第一次重新加载后更改static.html来验证。然后按Ctrl+R重新加载。它应该击中动作方法