ASP.NET Core之由配置系统与创建app所想到的

Posted JohnYang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core之由配置系统与创建app所想到的相关的知识,希望对你有一定的参考价值。

先看文件配置的代码:

ConfigurationBuilder configBuilder=new ConfigurationBuiler();//典型的创建者模式
configBuilder.AddJsonFile("config.json",option:false,reloadChange:false);//添加json配置文件,属于是创建者模式环节中的“配置创建者条件”的环节
IconfigurationRoot config=configBuilder.Build();//创建了配置root,“创建了对象”
string proxyAddress=config.GetSection("proxy:address").Value;//获取配置值

再看asp.net core 的Main():

public static void Main(string[] args)
        
            var builder = WebApplication.CreateBuilder(args);//典型的创建者模式

            // Add services to the container.
            //----------------属于是创建者模式环节中的“配置创建者条件”的环节,该环节应用了DI技术--------------------------
            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();
        

从以上两个代码,可以看出,它们其实都属于创建者模式,该模式下,首先要规定创建者被创建前的一系列“创建条件”,然后再Build(),进行创建。
以上代码不同的是,后者使用了DI技术,将“创建条件”,诉诸于依赖注入。

[Asp.Net Core]Asp.Net Core与配置系统的集成

Asp.net Core默认添加的配置提供者

1)加载现有的Iconfiguration
2)加载项目根目录下的appsettings.json
3)加载项目根目录下的appsettings.Enviroment
4)当程序运行在开发环境下,程序会加载“用户机密”配置
5)加载环境变量中的配置
6)加载命令行

配置的环境问题

  1. Why?开发环境,测试环境,生产环境需要进行不同的配置
  2. 运行环境:Asp.NET Core 会从环境变量中读取名字
    ASP.NETCORE_ENVIRONMENT的值。
    推荐值:
    Development(开发环境),Staging(测试环境),Production(生产环境)
  3. 读取方法:app.Enviroment.EnvironmentName,app.Environment.IsDevelopment()….
  4. 在Windows和VS(推荐开发时用)中设置环境变量的方法。

演示代码

    [ApiController]
    [Route("[controller]")]
    public class TestController : Controller
    
        [HttpGet]
        public string Demo() 
        
           return Environment.GetEnvironmentVariable("dezai");
        
    

1.系统环境变量

修改环境变量时,因为变量是与进程相关。重新运行运用程序经常并没有改变读取环境变量不会是最新的,需要重新启动VS。

2. 项目调试配置

只需要重新启动程序

3.启动程序读取环境变量

Console.WriteLine(app.Environment.EnvironmentName);
Console.WriteLine(app.Environment.IsDevelopment());
Console.WriteLine(app.Environment.IsProduction());

4.Controller读取当前的配置

Environment 属于IWebHostEnvironment类型,所以只需要在控制器中注入IWebHostEnvironment。

        private readonly IWebHostEnvironment webEnv;
 
        public TestController(IWebHostEnvironment webEnv)
        
            this.webEnv = webEnv;
        
        [HttpGet]
        public string Demo1()
        
            return webEnv.EnvironmentName;
        

以上是关于ASP.NET Core之由配置系统与创建app所想到的的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.Net Core]Asp.Net Core与配置系统的集成

[Asp.Net Core]Asp.Net Core与配置系统的集成

[Asp.Net Core]Asp.Net Core与配置系统的集成

在 Asp.Net Core App 中访问 Web.config 设置?

配置中心 App Configuration :轻松集成到Asp.Net Core

Asp.net core 配置文件