MVC路由中,带点号参数不能匹配路由问题处理方式

[软件开发] 季雨林 2018/2/27 13:23:57

        对于一个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 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示