MVC 带扩展名的路由无法访问
在MVC中,路由是必不可少的,而且MVC对Url的重写非常方便,只需要在路由中配置相应的规则即可。假如我们需要给信息详情页配置路由,代码如下:
routes.MapRoute(
name: "Info",
url: "info/{id}.html",
defaults: new { controller = "Index", action = "Info", id = UrlParameter.Optional }
);
运行结果图:
运行后发现系统找不到我们要的页面,而且调试后发现根本就没有匹配到我们配置的路由,这是因为IIS把.css文件、.js文件、.jpg以及.html等格式的请求都交给了StaticFile进行处理,而不去匹配路由规则,导致无法访问。
解决方法:
解决这个问题很简单,只需要在Web.config中添加一个配置节点并将其值设为true即可,代码如下:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
再次运行,页面被正常访问,亲测可行。

不过近段时间发现,当路由和静态文件同时存在的时候会有冲突,访问页面时一会走静态文件,一会走路由,目前还在寻找原因和解决办法。
热点缓存:就是通过对数据的分析,得到访问热点,然后针对热点和业务逻辑进行缓存处理,例如把页面静态化(~晓菜鸟 :) )。
假如/info/1.html这个页面是目前访问最高的一个页面,结合业务分析可以对这个页面进行静态化处理,目前采用的方式是在站点下面新建一个Info文件夹,然后在里面存放1.html的静态文件,测试发现,当我们访问/info/1.html这个页面时,有时会读取静态文件,有时会走路由,非常的不稳定。如果您有什么想法或建议,请直接在评论区留言,谢谢!
MVC 带扩展名的路由无法访问的更多相关文章
- MVC小系列(二十一)【带扩展名的路由可能失效】
mvc3之后:如果路由带上扩展名,比如这样: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRout ...
- 爱上MVC系列~带扩展名的路由失效问题
回到目录 对MVC中,对URL进行重写变得非常方便,你只要设置相应的路由规则即可完成,但进行MVC3后,发现设置了以下路由,系统具体不认 routes.MapRoute( name: "De ...
- Delphi获取文件名、文件名不带扩展名、文件名的方法;delphi 获取文件所在路径
取文件名 ExtractFileName(FileName); 取文件扩展名: ExtractFileExt(filename); 取文件名,不带扩展名: 方法一: Function Extrac ...
- PHP中获取当前页面的完整URL、PHP URL处理、获取不带扩展名的文件名
javascript实现: top.location.href 顶级窗口的地址this.location.href 当前窗口的地址 PHP实现 #测试网址: http://localhost/blog ...
- Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法
1.获取不带扩展名的文件名方法,利用ChangeFileExt函数修改传入参数的扩展为空,并不会对文件本身产生变更. ChangeFileExt(ExtractFileName('D:\KK\Test ...
- delphi下如何获得不带扩展名的文件名?
Edit1.Text:=ChangeFileExt(ExtractFileName(Application.ExeName),'') ; //获取到应用程序名后,将后缀名清空就可以啦.
- 在iis6里使用没有扩展名的mvc
这2天mvc第二个预览终于出来了.赶紧拿过来测试.在装了3.5的虚拟主机上运行正常.应该已经可以到能正常使用的阶段了.不过我前面一篇翻译的文章中说到,如果使用的是iis6的话就只能忍气吞声的使用带扩展 ...
- Struts2 Action扩展名的三种修改方法
最近在做项目开发过程中犯了一个很低级的错误,在这里列举出来,供大家参考借鉴:我希望通过Url请求一个Action,最终通过服务器的处理能得到一个Json串,所以我在Url中体现这一特点,将action ...
- C# 获取文件名及扩展名【转】
https://www.cnblogs.com/libushuang/p/5794976.html C# 获取文件名及扩展名 string aFirstName = aFile.Substring(a ...
随机推荐
- 【转】JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
http://www.cnblogs.com/therunningfish/p/5524238.html JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsol ...
- A1052. Linked List Sorting
A linked list consists of a series of structures, which are not necessarily adjacent in memory. We a ...
- .net Forms身份验证不能用在应用的分布式部署中吗?
参照网上的一些方法,使用Forms身份验证对应用进行分布式部署,发现没有成功. 应用部署的两台内网服务器:192.168.1.19,192.168.1.87,使用Nginx做负载分配,配置完全相同:每 ...
- jar文件放在桌面上双击启动不了,但放在其它任何文件夹里都可以双击启动
今天本来是想尝试一下Java Network Launching Protocol (JNLP,java网络加载协议) 的,写了一个简单的窗口程序,打包成jar保存到桌面上,双击等了半天没显示出来. ...
- csp20141203 集合竞价 解题报告
Solution:对股票出价进行排序,然后按照价格递增的次序依次设定p的价格并求成交量.1. //prove that the result of price(maximum--maxprice) i ...
- 洛谷 P1880 [NOI1995] 石子合并(区间DP)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合 ...
- eclipse中中文注释乱码怎么解决
作项目一般都是用UTF-8编码的,eclipse的默认编码是GBK,你在菜单栏Window里,选Preferences选项,第一项General里的Workspace,选定后右面有个Text file ...
- django在读取数据库时未筛选到符合条件的记录会报错
(1)报错情况如下: DoesNotExist: Publisher matching query does not exist. (2)处理方法: try: p = Publisher.o ...
- Linux命令之less
less命令 用处:查看文件,功能强大,随意浏览,查看之前不会预先加载文件 用法:less + 文件名 (按q退出) 示例: 一.查看文档内容 (我这里有一个profile的文件,我想查看里面的 ...
- Linux命令之如何从普通用户切换至管理员用户
普通用户,标志是一个$符号 管理员用户,标志是一个#符号 我要切换,敲打命令 sudo su - 然后输入你的管理员用户的密码(输入密码的时候是不可见的) 然后你就切换到#状态了.