需求:现在一个应用是前后端开发分离,前端使用angular,后端使用 asp.net core 提供api ,开发完成后,现在需要把两个程序部署在同一个网站下,应该怎么处理?
首先可以参考微软的官方文档 Use the Angular project template with ASP.NET Core
.net core 对前后端的部署还是很友好的,主要处理步骤如下:
1.配置服务 在startup中的 ConfigureServices()中声明
services.AddSpaStaticFiles(configuration => { //angular文件所在文件夹 configuration.RootPath = "client"; });
2. 调用服务,在startup中的 Configure() 方法中声明
app.UseStaticFiles(); // spa files app.UseSpaStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action=Index}"); }); //使用服务 app.UseSpa(f => { //f.Options.SourcePath = @"client"; if (env.IsDevelopment()) {
// 本地调试用 f.UseProxyToSpaDevelopmentServer("http://localhost:4200"); } });
这里要注意, app.usespa要放在 app.usemvc后面,否者前端是调不到后端api的。
3 部署:
前后端分别发布出来,在iis中把后端部署好,同时,在后端的文件夹中建立一个 “client” 文件夹(第一步中的配置),把前端发布好的文件放置到该目录中就可以了。