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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:55:20