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

