.NET 8 Blazor Web App(SSR)与ASP.NET API同宿主部署方法咨询
解决方案:.NET8 中托管带SSR的Blazor Web App到ASP.NET API
可以沿用类似.NET7的托管部署方式,但由于.NET8 Blazor Web App(SSR模式)的项目结构变化,需要调整API项目的配置,具体操作如下:
1. 修正API项目的Program.cs配置
你的现有代码中,MapFallbackToFile("index.html")是针对WASM模式的旧配置,而带SSR的Blazor Web App使用_Host.cshtml作为入口页面,需要替换这一行并补充必要配置:
修改后的完整代码:
var builder = WebApplication.CreateBuilder(args); // 添加Blazor Web App所需的服务 builder.Services.AddRazorComponents() .AddInteractiveServerComponents(); // 若使用Auto模式,需追加.AddInteractiveWebAssemblyComponents() builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddSingleton<DockerService>(); var app = builder.Build(); // 开发环境配置 if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); app.UseWebAssemblyDebugging(); } app.Urls.Add("http://localhost:5000"); app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); // 替换旧的fallback配置,映射到Blazor SSR的入口页面 app.MapFallbackToPage("/_Host"); app.Run();
2. 确认前端项目引用与配置
- 确保已将Blazor Web App项目添加为API项目的项目引用。
- 检查Blazor Web App项目属性:在「生成」选项卡中,确认输出类型为「类库」(默认配置),并根据你的需求设置交互模式(如Interactive Server、Auto)。
3. 部署与验证
- 本地运行API项目,访问
http://localhost:5000即可加载Blazor Web App的SSR内容。 - 部署时只需发布API项目,Blazor的静态资源、组件逻辑会被自动打包到API的发布包中。
关键说明
- .NET8 Blazor Web App(SSR模式)不再依赖
index.html,而是通过_Host.cshtml实现服务器端渲染入口,因此必须调整fallback终结点的映射规则。 - 若使用Auto模式(同时支持SSR和WASM),需在服务配置中同时添加
AddInteractiveServerComponents()和AddInteractiveWebAssemblyComponents(),并确保开发环境下启用UseWebAssemblyDebugging()。
内容的提问来源于stack exchange,提问作者Lixsl
相关产品推荐
相关产品推荐

