--- 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支持 ![image-20221121144928205](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20221121144928205.png) ### 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包 ![image-20221130161234399](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20221130161234399.png) ![image-20221130161319595](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20221130161319595.png) Autofac Autofac.Extensions.DependencyInjection Autofac.Extras.DynamicProxy 新建`ServiceAutofac.cs`类 ```c# using System.Reflection; namespace XiaodaERP { public class ServiceAutofac { /// /// 获取程序集名称 /// /// public static string GetAssemblyName() { return Assembly.GetExecutingAssembly().GetName().Name; } } } ``` `Program.cs`配置 ```c# builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer(builder => { Assembly assembly = Assembly.Load(ServiceAutofac.GetAssemblyName());//注入Service程序集 可以是其他程序集 builder.RegisterAssemblyTypes(assembly) .AsImplementedInterfaces() .InstancePerDependency(); }); ``` ### 2.4 注入Entity Framework Core 6 DbContext上下文 ```c# builder.Services.AddDbContext(options => options.UseOracle(builder.Configuration.GetConnectionString("OracleDbContext"))); builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerDbContext"))); ```