.NET 7中从Razor类库引用Razor组件页面遇404问题咨询
解决方案:在Web应用中使用Razor类库的Razor组件页面
可以在.NET 7的Web应用(MVC/Razor Pages)中使用Razor类库中的可路由Razor组件页面,你的问题源于配置不完整和路由路径不匹配,按以下步骤修复:
1. 检查Razor类库配置
确保类库的.csproj文件包含正确的SDK和配置:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <AddRazorSupportForMvc>true</AddRazorSupportForMvc> </PropertyGroup> <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> </Project>
2. 更新Web应用的Program.cs配置
补充必要的Blazor服务和端点映射:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); // 添加Server-Side Blazor服务及Razor组件支持 builder.Services.AddServerSideBlazor(); builder.Services.AddRazorComponents(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); // 映射Blazor Hub及Razor组件路由 app.MapBlazorHub(); // 关联Razor类库中的组件(替换为你的组件所在类库的类型) app.MapRazorComponents<App>() .AddAdditionalAssemblies(typeof(Test).Assembly); app.Run();
3. 修正Razor组件的路由路径
你的Test.razor组件@page指令为"/test",但访问路径是/myfeature/test,两者不匹配。修改组件的路由指令:
@page "/myfeature/test" <h3>Test Razor Component</h3>
4. 确保Web应用引用Razor类库
在Web应用项目中添加对目标Razor类库的项目引用,或通过NuGet包引用(若类库已打包)。
5. 导入组件命名空间
在Web应用的_Imports.razor文件中添加Razor类库的命名空间:
@using YourRazorLibraryNamespace @using YourRazorLibraryNamespace.MyFeature
完成以上步骤后,重启Web应用,访问https://localhost:7054/myfeature/test即可正常加载Razor组件页面。
内容的提问来源于stack exchange,提问作者GLuca74
相关产品推荐
相关产品推荐

