1.打开阿里云Serverless应用引擎SAE页面,切换到应用列表,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/ddde485815de5cd6a36def386cf9ca68.png)
2.点击列表中的蓝色应用名称“dc-ship-service”,进入SAE详情页面,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/c3dfeee1d0aad80972b4c4ce5c762300.png)
3.点击上图vSwitch名称 “vsw-wz9j5oit4yjs0klv97fty”,进入专有网络->交换机页面,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/c0eaa7fd05c06b0ab110e3955e54baa8.png)
4.上图中,点击切换到"公网NAT网关", 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/81566226b2f914e7325fae6c9955ff0f.png)
5.如上图,点击"创建NAT网关",如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/3039606bb60e18aa22920c6332229abf.png)
6.点击上图的"立即购买",如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/5e09d3e4e0551355cf5fde74f8518521.png)
7.点击上图的"确认订单",即可跳往资源创建中,创建成功后,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/69156f5cbf23a4a4da77c014e8a65471.png)
8.点击上图"返回迭制台",会出现刚刚创建的"公网NAT网关",如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/b479f499d4857a7962b227b32acc7e71.png)
9.点击上图实例ID/名称, 蓝色链接"ngw-wz9spndqmpt1e2v6blgwq",进入下图:
![](https://i-blog.csdnimg.cn/blog_migrate/eb2fc716bd9e71e2d1d873f1c8865f9b.png)
10.看上图,点击"所属路由表"名称,进入下一步,切换到自定义路由条目,看到目标网段"0.0.0.0/0",说明我们Nat网关创建成功,SAE即可访部到外网的任何IP,当然这里可以自己想办法设置白名单IP, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/6cefabb20d71669a71be35a881f8fdb9.png)
11. 我们回到本地vs2022的asp.net 6.0 web api 项目中,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/34cc58abbcc8bbaf23aada03c63c757c.png)
12. ap.net web 6.0 web api 项目中 Program.cs类主要代码,如下:
using Autofac;
using Autofac.Extensions.DependencyInjection;
using ShipService.Autofac;
using ShipService.Util;
using SqlSugar;
using SqlSugar.IOC;
var builder = WebApplication.CreateBuilder(args);
IConfiguration Configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
ConfigureHelper.Init(builder.Configuration);
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(container =>
{
builder.Services.AddModule(container, "ShipService");
});
//SqlSugar for mysql
builder.Services.AddSqlSugar(ConfigureHelper.Get<IocConfig>("MySqlDB"));
//sqlsugar log
builder.Services.ConfigurationSugar(db =>
{
db.CurrentConnectionConfig.InitKeyType = InitKeyType.SystemTable;
});
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
//if (app.Environment.IsDevelopment())
//{
app.UseSwagger();
app.UseSwaggerUI();
//}
//app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
12. asp.net web 6.0 web api 项目中,我们采用了sqlsugar ORM 框架连接阿里云数据库,并写相应接口代码读取数据库表的数据,如下图主要代码:
using Microsoft.AspNetCore.Mvc;
using ShipService.Dto;
using ShipService.Services;
namespace ShipService.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class UserController : ControllerBase
{
private readonly SysUserService _sysUserService;
public UserController(SysUserService sysUserService)
{
_sysUserService = sysUserService;
}
/// <summary>
/// 查询账户信息列表
/// </summary>
[HttpGet]
public IEnumerable<UserDto> List()
{
var result = _sysUserService.AsQueryable().Select(m => new UserDto
{
UserId = m.UserId,
Name = m.Name
}).ToList();
return result;
}
}
}
13.项目相应代码写好后,右击项目中的Dockerfile 弹出菜单点击"生成docker镜像",如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/65be2d02d5bb4f37ed8b7b221c9eee1f.png)
14.生成镜像成功后,打开windows的dos窗体,把镜像推往阿里云的个人镜像库,然后重新发布SAE即可。然后通过SLB的公网IP访问swagger,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/5024d499a411dd89374880cf148add9c.png)
15.如上图中,我们点开User中的/api/User/List接口,该接口是连接ECS服务器数据库,调试接口并读出数据,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/bf55d090be3857bbc4d1848b280fb94a.png)
16.以上所述,如看不明白,请给我留言,联系一起讨论。