使用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
相关产品推荐
相关产品推荐

