如何将.NET 8 Blazor Auto项目(Server与Client端)部署到单个App Service?
将.NET 8 Blazor Auto项目的Server和Client合并部署到单个Azure App Service
步骤1:在Server项目中添加Client项目引用
打开Server项目的.csproj文件,添加对Client项目的项目引用,确保构建时能关联两者:
<ItemGroup> <ProjectReference Include="..\你的Client项目名称\你的Client项目名称.csproj" /> </ItemGroup>
步骤2:配置Server托管Client静态文件
修改Server项目的Program.cs,添加静态文件托管逻辑,确保在映射Blazor组件前执行:
var builder = WebApplication.CreateBuilder(args); // 保留原有服务配置(如AddRazorComponents、AddInteractiveWebAssemblyServices等) builder.Services.AddRazorComponents() .AddInteractiveWebAssemblyComponents(); var app = builder.Build(); // 启用静态文件托管,加载Client的UI资源 app.UseStaticFiles(); app.UseAntiforgery(); // 映射Blazor组件并关联Client程序集 app.MapRazorComponents<App>() .AddInteractiveWebAssemblyRenderMode() .AddAdditionalAssemblies(typeof(你的Client项目命名空间._Imports).Assembly); // 保留原有API端点映射代码 app.MapControllers(); app.Run();
步骤3:配置发布时自动合并Client输出
在Server项目的.csproj中添加发布后事件,让Server发布时自动将Client的构建产物同步到自身的wwwroot目录:
<Target Name="PublishClient" AfterTargets="Publish"> <Exec Command="dotnet publish ..\你的Client项目名称\你的Client项目名称.csproj -c $(Configuration) -o $(PublishDir)wwwroot" /> </Target>
步骤4:调整Client的API请求路径
如果Client中原本配置了指向独立Server的绝对API地址,需要改为相对路径(比如将https://server-domain/api改为/api),确保请求直接转发到当前托管的Server后端。
步骤5:测试与部署
- 本地测试:清理解决方案后构建Server项目,启动Server,验证是否能正常访问Client UI和API接口。
- 部署到App Service:直接将Server项目发布到Azure App Service即可,Client的静态文件已包含在Server的发布包中,无需单独部署。
内容的提问来源于stack exchange,提问作者Nagaraj Puthiyavan
相关产品推荐
相关产品推荐

