对于一个mvc请求地址,如果最后一段包含点号,例如 2bit.cn/3.14 ,它是匹配不到默认路由 2bit.cn/{code} 的,原因在于这个带点号的链接被识别成了文件下载(例如xxx.zip),或者说特定程序处理 (例如 xxx.html)
解决办法:
<system.webServer>
<handlers>
<add name="ApiURIs-ISAPI-Integrated-4.0" path="*" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
使用了这个办法之后,会发现:
对于不存在的html路径也当成参数识别,而不是404;
对于已经存在的html路径却成了500错误,打不开纯静态页。
这里我做了一个取舍,毕竟大部分情况可以写成动态页面,输出静态内容,于是到此没做进一步处理,接受了当前的这种处理结果。数字3.14能当作参数识别就算是解决了我得问题。偶尔需要用到 直接访问根目录静态文件时候,手动注释配置文件,例如百度站长、360站长等网站所有权的文件验证情景。
打脸了,css,js也因此不能访问了,现在只能注释掉上述代码,重新找3.14参数的解决方案。
原文地址:
https://www.opengps.cn/Blog/View.aspx?id=60
文章的更新编辑依此链接为准。欢迎关注源站原创文章!