.NET Core WebApi 前后端开发分离后的配置和部署

本文介绍了一个采用Node.js+Vue作为前端、.NET Core WebAPI作为后端的B/SSaas项目的前后端分离部署方案。重点讲解了如何通过设置主页、开启静态文件访问及配置路由实现前后端在同一站点下绑定同一域名的部署。

转自博客:https://www.cnblogs.com/Vam8023/p/10670741.html

背景:现在越来越多的企业都采用了在开发上前后端分离,前后端开发上的分离有很多种,那么今天,我来分享一下项目中得的前后端分离。

B/S Saas 项目:(这个项目可以理解成个人中心,当然不止这么点功能)

前端:node.js + vue

后端:.NET Core WebApi

前端安装 node.js 跟创建vue项目这些不是这篇文章的重点,重点在于项目完成后的部署。

.NET Core WebApi创建后,默认就创建了一个wwwroot的文件夹,这个文件夹是用来放置静态文件的,所以,我们可以理解成,这个文件夹将放置我们的build好的前端项目。

 OK,到现在来讲,有一个很有意思的发现(也可以是一点意思都没有,因为都是同一个爸生的),这项目的部署跟mvc的部署的很像(这里不涉及底层运行,只是一个发布后简单的像而已)。

由上图就足够清晰了,这样的部署是属于开发上的前后端分离,他们同属于一个站点,绑定同一个域名,所以不涉及跨域,外部不能直接调用webapi(安全上还是有保证D)。

那么这样的部署却很简单,仅仅是在 Startup 里面的 Configure 设置 一下即可

//设置主页
app.UseDefaultFiles();

//这个是.net core webapi 访问wwwroot文件夹的配置,开启静态文件
app.UseStaticFiles();

app.UseMvc(routes =>
{
    routes.MapRoute(
     name: "default",
     template: "api/{controller=Login}/{action=Get}/{id?}");
});

1、首先是设置主页

  这里直接使用的是默认的,就是 UseDefaultFiles 会重定向到 default.htm、default.html、index.htm、index.html。当然你也可以指定设置的首页(指定的页面是可以自定义的!)

//设置主页
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add("index.html");

app.UseDefaultFiles(defaultFilesOptions);

 这样就设定了重定向到 index.html,那为什么前面用了 Clear,其实个人认为仅仅是为了保险,因为

2、开启静态文件,UseDefaultFiles 仅仅是一个重定向URL而不是真的提供一个文件,真正提供静态文件的还是 UseStaticFiles。这就是为什么要优先设置 UseDefaultFiles 再到 UseStaticFiles的原因。当然,提供静态文件也提供了多个重载,可以提供一个相对路径,还有静态文件目录的选择。

//这个是.net core webapi 访问wwwroot文件夹的配置,开启静态文件
StaticFileOptions staticFileOptions = new StaticFileOptions();
 staticFileOptions.FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(@"D:\testsite\wwwroot\");//指定目录你站点api的要访问的wwwroot目录   
app.UseStaticFiles(staticFileOptions);

上面这种写法也同样可以,当然指定的目录也同样可以放到配置文件里面去,但是这种做法一般都放在类似FTP的项目上。因为如果是指定的目录脱离了 webapi 项目 wwwroot ,甚至是 wwwroot 下的文件夹都不可以访问到静态页面的。

3、使用MVC并配置路由,开启了静态文件的访问之后,就交由mvc来处理了,这个是webapi项目,所以配置api的路由就可以了。(除了上面的1、2顺序不可以改变之外,mvc中配置的路由所放置的顺序倒没影响,因为这不是一个mvc项目)

好了,前后端都开发好之后,部署到服务器,仅是上面在Startup的配置即可。.net core 还是非常非常方便的。

正常访问!一点问题都没有,就算是有问题,也是代码的问题了,噢哈哈

这就是我的项目中的前后端在开发上分离的实践,讲得不深,随便拍!

 

转载于:https://www.cnblogs.com/cxt618/p/10683445.html

### 部署基于 Vue3 的前端 .NET Core Web API 后端到 Windows 10 #### 1. 准备工作 在开始部署之前,确保以下条件已满足: - **Node.js** 已安装(用于 Vue3 项目构建) - **.NET Core SDK** 或 **.NET 5+ Runtime** 已安装(用于运行 Web API) - **IIS**(Internet Information Services)已安装并配置(可选,用于托管前端后端) #### 2. 部署 Vue3 前端 Vue3 项目通常使用 Vite 或 Vue CLI 构建。构建完成后,生成的静态文件可以部署到 IIS 或任何静态文件服务器上。 ##### 2.1 构建 Vue3 项目 在项目根目录下运行以下命令进行构建: ```bash npm run build ``` 这将在 `dist/` 目录下生成优化后的静态资源。 ##### 2.2 部署到 IIS 1. 打开 **IIS 管理器**。 2. 在左侧连接树中选择服务器节点。 3. 在右侧操作面板中点击 **“添加网站”**。 4. 设置站点名称、物理路径(指向 Vue3 的 `dist/` 目录),并指定端口号。 5. 确保绑定的 IP 地址端口可用。 6. 启动网站。 如果 Vue3 项目使用了 Vue Router 的 `history` 模式,需要在 IIS 中添加 URL 重写规则以避免 404 错误: ```xml <configuration> <system.webServer> <rewrite> <rules> <rule name="Handle History Mode" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/index.html" /> </rule> </rules> </rewrite> </system.webServer> </configuration> ``` #### 3. 部署 .NET Core Web API ##### 3.1 发布 .NET Core 项目 在项目目录下运行以下命令发布项目: ```bash dotnet publish -c Release -o ./publish ``` 这将在 `publish/` 目录下生成可部署的文件。 ##### 3.2 部署到 IIS 1. 安装 [.NET Core Hosting Bundle](https://dotnet.microsoft.com/platform/support/policy),以确保 IIS 能够托管 .NET Core 应用。 2. 打开 **IIS 管理器**,添加新网站。 3. 设置站点名称、物理路径(指向 `publish/` 目录),并指定端口号。 4. 确保应用程序池使用 **No Managed Code** 模式,并且 .NET CLR 版本为 **v4.0**。 5. 启动网站。 ##### 3.3 配置 `appsettings.json` 在部署之前,确保 `appsettings.json` 中的数据库连接字符串其他配置项已调整为生产环境设置。 ##### 3.4 配置跨域(CORS) 在 `Startup.cs` 或 `Program.cs` 中启用 CORS,以允许 Vue3 前端访问 API: ```csharp app.UseCors(builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); ``` #### 4. 配置反向代理(可选) 可以使用 IIS 作为反向代理,将前端后端部署在同一域名下,通过路径区分: - 前端:`http://yourdomain.com/` - 后端:`http://yourdomain.com/api/` ##### 4.1 安装 URL 重写 ARR 模块 在 IIS 中安装 **URL Rewrite** **Application Request Routing (ARR)** 模块。 ##### 4.2 配置反向代理规则 添加如下重写规则: ```xml <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="api/(.*)" /> <action type="Rewrite" url="http://localhost:5000/{R:1}" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer> </configuration> ``` #### 5. 配置 HTTPS(可选但推荐) 可以使用 **Let's Encrypt** 或 **自签名证书** 配置 HTTPS: 1. 在 IIS 中打开 **服务器证书**。 2. 创建自签名证书或导入 Let's Encrypt 证书。 3. 在网站绑定中添加 HTTPS 协议,并选择相应证书。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值