网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > .Net >

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

时间:2024-11-19 11:32

人气:

作者:admin

标签:

导读:前后端分离的开发中,在部署项目时通常会分开进行部署,而这样又很麻烦,需要配置跨域,域名配置等等 有一些情景下,我们需要采用更为方便的方式去部署,可以参考下方方法进行...

前后端分离的开发中,在部署项目时通常会分开进行部署,而这样又很麻烦,需要配置跨域,域名配置等等
有一些情景下,我们需要采用更为方便的方式去部署,可以参考下方方法进行调整

准备

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

调整

为WebApi项目新增 wwwroot 文件夹,用于放置前端静态文件
在 Program.cs 中增加如下改动

// 默认文件
app.UseDefaultFiles(); // Default.html、Default.htm、index.html、index.htm

// 静态文件
app.UseStaticFiles(); // 可访问 wwwroot 下的静态文件

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();

// 映射回退路由以为客户端路由提供 index.html
app.MapFallbackToFile("index.html");

以上是最简单的配置方式,HashRouter或BrowserRouter都可以用,不需要再单独为前端配置Nginx重定向,也可以使用下面的方式,过滤指定前缀的不重定向到静态文件

<Route path="/:nthParam*" component={DefaultLayout} /> // 有此类路由配置的推荐配置
// 一定要在认证之前添加,否则会认证失败
app.UseRouting();

// 静态文件
app.UseStaticFiles();

// 默认文件
app.UseDefaultFiles();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

if (!app.Environment.IsDevelopment())
{
    DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
    defaultFilesOptions.DefaultFileNames.Clear();
    // 设置首页,默认为 index.html
    defaultFilesOptions.DefaultFileNames.Add("index.html");
    app.UseDefaultFiles(defaultFilesOptions);
}

// 使用 MapWhen 方法来排除 /api 路径的请求
app.MapWhen(context => !context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
    appBuilder.UseEndpoints(endpoints =>
    {
        // 映射回退路由以为客户端路由提供 index.html
        endpoints.MapFallbackToFile("index.html");
    });
});

app.MapControllers();
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信