将打包后的 React或Vue 与 WebApi 部署在同一站点

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

前后端分离的开辟中,在部署项目时通常会分开举行部署,而这样又很贫苦,必要配置跨域,域名配置等等
有一些情景下,我们必要采用更为方便的方式去部署,可以参考下方方法举行调解
准备


  • Web Api项目
  • 一个打包好的前端项目 React或VUE都可以
调解

为WebApi项目新增 wwwroot 文件夹,用于放置前端静态文件
在 Program.cs 中增长如下改动
  1. // 默认文件
  2. app.UseDefaultFiles(); // Default.html、Default.htm、index.html、index.htm
  3. // 静态文件
  4. app.UseStaticFiles(); // 可访问 wwwroot 下的静态文件
  5. // Configure the HTTP request pipeline.
  6. if (app.Environment.IsDevelopment())
  7. {
  8.     app.UseSwagger();
  9.     app.UseSwaggerUI();
  10. }
  11. app.UseAuthorization();
  12. app.MapControllers();
  13. // 映射回退路由以为客户端路由提供 index.html
  14. app.MapFallbackToFile("index.html");
复制代码
以上是最简单的配置方式,HashRouter或BrowserRouter都可以用,不必要再单独为前端配置Nginx重定向,也可以使用下面的方式,过滤指定前缀的不重定向到静态文件
  1. [/code][code]// 一定要在认证之前添加,否则会认证失败
  2. app.UseRouting();
  3. // 静态文件
  4. app.UseStaticFiles();
  5. // 默认文件
  6. app.UseDefaultFiles();
  7. // Configure the HTTP request pipeline.
  8. if (app.Environment.IsDevelopment())
  9. {
  10.     app.UseSwagger();
  11.     app.UseSwaggerUI();
  12. }
  13. app.UseAuthorization();
  14. if (!app.Environment.IsDevelopment())
  15. {
  16.     DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
  17.     defaultFilesOptions.DefaultFileNames.Clear();
  18.     // 设置首页,默认为 index.html
  19.     defaultFilesOptions.DefaultFileNames.Add("index.html");
  20.     app.UseDefaultFiles(defaultFilesOptions);
  21. }
  22. // 使用 MapWhen 方法来排除 /api 路径的请求
  23. app.MapWhen(context => !context.Request.Path.StartsWithSegments("/api"), appBuilder =>
  24. {
  25.     appBuilder.UseEndpoints(endpoints =>
  26.     {
  27.         // 映射回退路由以为客户端路由提供 index.html
  28.         endpoints.MapFallbackToFile("index.html");
  29.     });
  30. });
  31. app.MapControllers();
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表