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

Blazor WASM自定义元素仅在Razor Pages根页面生效问题求助

.NET7 Blazor自定义元素在Razor Pages路由页面中出现资源404问题的解决思路

问题场景

我基于托管在ASP.NET Core Razor Pages中的.NET7 Blazor自定义元素示例项目,更新到最新.NET7版本并移除了已废弃的<script src="_content/Microsoft.AspNetCore.Components.CustomElements/BlazorCustomElements.js"></script>脚本后,遇到以下问题:

  • 将自定义元素<my-counter title="Khalid" increment-amount="2" />添加到/privacy页面时,触发404错误:GET https://localhost:7213/Privacy/_content/Microsoft.AspNetCore.Components.CustomElements/Microsoft.AspNetCore.Components.CustomElements.lib.module.js net::ERR_ABORTED 404
  • 添加到/some/routed/page这类多级路由页面时,触发404错误:blazor.webassembly.js: GET https://localhost:7213/some/routed/_framework/blazor.boot.json 404

补充情况:移除BlazorSolo.Components.csproj中的<PackageReference Include="Microsoft.AspNetCore.Components.CustomElements" Version="7.0.1" />引用后,用旧方式<component type="typeof(Counter)" param-title="@("the title")" param-IncrementAmount="3" render-mode="WebAssemblyPrerendered" />实例化组件可在所有页面正常工作;但只要保留该包引用,即便移除builder.RootComponents.RegisterCustomElement<Counter>("my-counter");和<my-counter>标签,旧方式也会触发相同错误。

问题原因

这是Microsoft.AspNetCore.Components.CustomElements包的一个路径问题:包在自动注入相关脚本时,使用了相对路径而非根路径,导致浏览器在非根目录的路由页面中,会从当前页面路径下去寻找资源文件,而非网站根目录,最终引发404错误。

解决方案

1. 设置网站基础路径

在Razor Pages的布局文件(如_Layout.cshtml)的<head>区域添加<base href="/" />标签,强制所有资源请求从网站根路径发起:

<head>
    <base href="/" />
    <!-- 其他页面头部内容 -->
</head>

这是解决路径问题最核心的一步,确保所有静态资源、Blazor框架文件都能被正确定位。

2. 手动指定CustomElements脚本的绝对路径

如果基础路径设置后仍存在脚本加载问题,可以手动添加脚本引用并使用绝对路径:

<script src="/_content/Microsoft.AspNetCore.Components.CustomElements/Microsoft.AspNetCore.Components.CustomElements.lib.module.js"></script>

绕过包的自动注入逻辑,直接指定根路径下的脚本文件。

3. 检查静态资源中间件配置

确保Program.cs中已正确注册静态资源服务,且该中间件在路由相关中间件之前:

var builder = WebApplication.CreateBuilder(args);

// 添加服务...

var app = builder.Build();

// 先注册静态资源中间件
app.UseStaticFiles();

// 再注册Razor Pages和Blazor相关路由
app.MapRazorPages();
app.MapBlazorHub();

app.Run();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:30:48