You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET路由约束:排除图片后缀路径调用控制器方法的正则问题

修正方案

问题原因

  • 你当前的正则是正向匹配图片后缀路径,只有路径带图片后缀时才会触发该路由,和需求完全相反
  • 正则本身存在语法错误,末尾的(/.)?)写法有误,无法匹配正常路径结构

调整后的路由配置

routes.MapRoute(
    name: "DefaultCMS",
    url: "{*paths}",
    defaults: new
    {
        controller = "Home",
        action = "Index",
        paths = UrlParameter.Optional
    },
    constraints: new { paths = @"^((?!\.(jpeg|gif|jpg|png)$).)*$" }
);

正则说明

  • 用了负向零宽断言(?!pattern),表示匹配不满足后面规则的内容
  • 整个正则的含义是:匹配从开头到结尾,末尾没有出现.jpeg/.gif/.jpg/.png后缀的所有路径,只有满足这个条件时路由才会生效

额外注意

  • 这个通用路由要放在所有自定义路由规则的最下方,避免拦截你需要单独生效的其他路由
  • IIS默认会优先处理静态文件,图片资源默认不会走到路由规则中,如果仍然出现图片被拦截的情况,可以检查web.config中静态资源处理的相关配置是否被修改

内容的提问来源于stack exchange,提问作者Kd Nimavat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:57:01