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

使用YARP时FluentUI组件包加载失败的问题求助

解决Blazor FluentUI组件资源被YARP代理到旧服务器的404问题

核心问题是YARP的全局代理规则没有排除Blazor组件的静态资源路径,导致_content/开头的请求被错误转发到旧ASP.NET服务器,以下是具体解决步骤:

  • 调整YARP路由配置,排除组件静态资源路径
    在你的YARP配置(通常是appsettings.json)中,给代理路由添加ExcludePaths规则,排除/_content/开头的所有请求:

    "ReverseProxy": {
      "Routes": {
        "legacy-proxy-route": {
          "ClusterId": "legacy-aspnet-cluster",
          "Match": {
            "Path": "{**catch-all}",
            "ExcludePaths": ["/_content/{**catch-all}"]
          }
        }
      },
      "Clusters": {
        "legacy-aspnet-cluster": {
          "Destinations": {
            "legacy-server": {
              "Address": "http://legacy-aspnet-server"
            }
          }
        }
      }
    }
    

    这个配置会让YARP跳过所有/_content/路径的请求,不再代理到旧服务器。

  • 确保静态资源中间件顺序正确
    在Program.cs中,静态资源中间件必须放在YARP代理之前,保证新服务器先处理_content/下的组件资源:

    var app = builder.Build();
    
    // 先处理静态资源(包括Blazor组件的_content资源)
    app.UseStaticFiles();
    
    app.UseRouting();
    
    // 再启用YARP代理
    app.MapReverseProxy();
    
    // 最后配置Blazor相关端点
    app.MapBlazorHub();
    app.MapFallbackToPage("/_Host");
    
  • 验证路由优先级
    如果存在多个YARP路由规则,确保带有ExcludePaths的全局代理规则优先级最高,避免其他规则提前匹配_content/路径。

原理说明:Blazor组件库的静态资源(如JS、CSS文件)默认通过/_content/[组件包名]/路径对外提供,这些资源需要由新的ASP.NET Core服务器直接返回,而不是转发到旧服务器。通过YARP的ExcludePaths排除这些路径后,请求会被静态资源中间件正确处理,解决404问题。

内容的提问来源于stack exchange,提问作者Bobby Thompson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:22:40