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

.NET 7 Attribute Route调试时'/blog'路由失效问题求助

解决.NET 7调试环境下/blog特性路由无法访问的问题

可能原因及修复方案

1. 静态文件目录冲突

调试时UseStaticFiles中间件会优先匹配wwwroot下的物理目录/文件。若项目wwwroot存在blog文件夹,ASP.NET Core会将/blog请求导向静态目录,而非控制器路由。

修复操作:

  • 检查wwwroot目录,确认是否有blog文件夹;
  • 若存在,要么重命名该文件夹,要么修改静态文件配置排除/blog路径:
    // 先为非/blog路径启用静态文件
    app.MapWhen(context => !context.Request.Path.StartsWithSegments("/blog"), appBuilder =>
    {
        appBuilder.UseStaticFiles(new StaticFileOptions
        {
            OnPrepareResponse = ctx =>
            {
                const int durationInSeconds = 365 * 60 * 60 * 24;
                ctx.Context.Response.Headers[HeaderNames.CacheControl] =
                    "public,max-age=" + durationInSeconds;
            }
        });
    });
    // 再处理其他中间件和路由
    

2. 调整路由匹配优先级

默认约定路由可能与特性路由产生优先级冲突,需明确优先处理特性路由:

修复操作:
在UseRouting后添加MapControllers(),确保特性路由优先匹配:

app.UseRouting();

// 优先匹配带[Route]特性的控制器方法
app.MapControllers();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

3. 清除调试环境缓存

调试环境可能残留旧配置缓存:

  • 以浏览器隐私模式访问/blog,排除浏览器缓存影响;
  • 删除项目根目录下的.vs隐藏文件夹,重置IIS Express配置;
  • 右键项目 → 属性 → 调试,确认启动URL无特殊重写规则。

4. 排查自定义中间件干扰

项目中的ErrorHandler或自定义X-Frame-Options中间件可能拦截请求:

  • 临时注释UseMiddleware<ErrorHandler>()和自定义中间件,测试/blog是否正常;
  • 若恢复正常,逐步排查中间件逻辑,确认是否对/blog路径做了特殊处理。

内容的提问来源于stack exchange,提问作者Erkan KAMAZOGLU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:45:40