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

ASP.NET Core 8 Razor项目集成Blazor遇页面未找到等问题求助

在ASP.NET Core 8 Razor项目中正确集成Blazor的步骤

1. 确认文件位置与结构

  • Blazor页面(.razor)需放在项目的Pages目录下(与现有Razor页面同目录),否则路由系统无法识别。将你的Test.razor移至Pages文件夹中。
  • 非页面组件(如Counter)建议放在Shared目录下,便于全局引用。

2. 修正Program.cs配置顺序

中间件和服务注册顺序直接影响功能生效,调整为以下正确顺序:

var builder = WebApplication.CreateBuilder(args);

// 保留原有Razor页面服务 + 添加Blazor相关服务
builder.Services.AddRazorPages();
builder.Services.AddSignalR();
builder.Services.AddServerSideBlazor();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
// Blazor静态文件支持必须在UseStaticFiles之后
app.UseBlazorFrameworkFiles();
app.UseRouting();
app.UseAuthorization();

// 注册Blazor Hub和原有Razor页面路由
app.MapBlazorHub();
app.MapRazorPages();

app.Run();

3. 解决Blazor页面无法访问问题

  • 检查路由冲突:确保@page "/Test"未与现有Razor页面(如Test.cshtml)的路由重复,Razor页面会优先匹配路由。
  • 验证路由注册:启动项目后查看控制台输出的路由端点列表,确认/Test已被注册为Blazor页面路由。
  • 直接访问完整路径:使用https://localhost:<端口>/Test访问,避免路由解析异常。

4. 在Razor页面中正确渲染Blazor组件

  • 匹配渲染模式:你配置的是ServerSideBlazor,需将render-mode改为服务器端模式:
    <!-- 在目标Razor页面中添加 -->
    <component type="typeof(Counter)" render-mode="ServerPrerendered" />
    
  • 引用组件命名空间:在Razor页面顶部添加组件所在命名空间(或在_ViewImports.cshtml中全局配置):
    @using YourProjectName.Shared
    

5. 验证NuGet包依赖

确保项目已安装ServerSideBlazor所需的包,检查.csproj文件包含以下引用:

<PackageReference Include="Microsoft.AspNetCore.Components.Server" Version="8.0.*" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:07