123 lines
2.9 KiB
Markdown
123 lines
2.9 KiB
Markdown
---
|
|
title: ASP.Net 6
|
|
date: 2021-03-23 10:30:31
|
|
author: 文永达
|
|
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
|
---
|
|
|
|
# ASP.Net 6
|
|
|
|
## 1. 部署到Docker
|
|
|
|
### 1.1 安装.Net SDK 6.0环境
|
|
|
|
```shell
|
|
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
|
|
sudo yum install dotnet-sdk-6.0
|
|
dotnet --info
|
|
```
|
|
|
|
### 1.2 Visual Studio添加Docker支持
|
|
|
|

|
|
|
|
### 1.3 Linux下构建Docker镜像
|
|
|
|
```shell
|
|
docker image build -f ./XiaodaERP/Dockerfile -t aspnetcore .
|
|
docker images
|
|
```
|
|
|
|
### 1.4 运行Docker镜像
|
|
|
|
```shell
|
|
docker run --name=aspnetcore -p 9001:80 -d aspnetcore
|
|
docker ps
|
|
```
|
|
|
|
|
|
|
|
```shell
|
|
cd /usr/local/jenkins_home/workspace/XiaodaERP_NetCore
|
|
echo $PWD
|
|
docker image build -f ./XiaodaERP/Dockerfile -t xiaodaerp/netcore .
|
|
docker images
|
|
docker run --name xiaodaerp/netcore -p 7274:80 -d xiaodaerp/netcore
|
|
```
|
|
|
|
## 2. 顶级语句配置`Program.cs`
|
|
|
|
### 2.1 取消默认JSON首字母小写命名
|
|
|
|
```c#
|
|
builder.Services.AddControllers().AddJsonOptions(options => {
|
|
options.JsonSerializerOptions.PropertyNamingPolicy = null;
|
|
});
|
|
```
|
|
|
|
### 2.2 Json序列化时忽略属性为null的值
|
|
|
|
```c#
|
|
builder.Services.AddControllers().AddJsonOptions(options => {
|
|
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
|
|
});
|
|
```
|
|
|
|
### 2.3 使用Autofac自动注入Service
|
|
|
|
通过NuGet包管理器 安装NuGet包
|
|
|
|

|
|
|
|

|
|
|
|
Autofac
|
|
|
|
Autofac.Extensions.DependencyInjection
|
|
|
|
Autofac.Extras.DynamicProxy
|
|
|
|
新建`ServiceAutofac.cs`类
|
|
|
|
```c#
|
|
using System.Reflection;
|
|
|
|
namespace XiaodaERP
|
|
{
|
|
public class ServiceAutofac
|
|
{
|
|
/// <summary>
|
|
/// 获取程序集名称
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static string GetAssemblyName()
|
|
{
|
|
return Assembly.GetExecutingAssembly().GetName().Name;
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
`Program.cs`配置
|
|
|
|
```c#
|
|
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
|
|
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
|
|
{
|
|
Assembly assembly = Assembly.Load(ServiceAutofac.GetAssemblyName());//注入Service程序集 可以是其他程序集
|
|
builder.RegisterAssemblyTypes(assembly)
|
|
.AsImplementedInterfaces()
|
|
.InstancePerDependency();
|
|
});
|
|
```
|
|
|
|
### 2.4 注入Entity Framework Core 6 DbContext上下文
|
|
|
|
```c#
|
|
builder.Services.AddDbContext<OracleDbContext>(options =>
|
|
options.UseOracle(builder.Configuration.GetConnectionString("OracleDbContext")));
|
|
|
|
builder.Services.AddDbContext<SqlServerDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerDbContext")));
|
|
```
|
|
|