当前位置: 首页 > wzjs >正文

最简单的网站定制开发企业

最简单的网站,定制开发企业,网站建设保密条款,个人主页网页设计源代码文章目录 前言一、配置源与默认设置二、使用步骤1)创建项目并添加配置2)配置文件3)强类型配置类4)配置Program.cs5)控制器中使用配置6)配置优先级测试7)动态重载配置测试8)运行结果示…

文章目录

  • 前言
  • 一、配置源与默认设置
  • 二、使用步骤
    • 1)创建项目并添加配置
    • 2)配置文件
    • 3)强类型配置类
    • 4)配置Program.cs
    • 5)控制器中使用配置
    • 6)配置优先级测试
    • 7)动态重载配置测试
    • 8)运行结果示例
  • 总结


前言

集成配置系统的主要目的是将应用程序的配置信息与代码分离,使得配置信息可以在不需要修改代码的情况下进行维护。这样可以提高应用程序的灵活性和可维护性。

ASP.NET Core 提供了一种灵活的配置系统,可以轻松地将配置信息从不同的来源加载到应用程序中,并且可以根据环境变量、命令行参数、JSON 文件、XML 文件、环境变量等不同来源来管理配置。

一、配置源与默认设置

  • ASP.NET Core默认通过CreateDefaultBuilder方法预配置了多种配置源,优先级从低到高依次为:
    • appsettings.json
    • appsettings.{Environment}.json
    • 用户机密(开发环境)
    • 环境变量
    • 命令行参数

二、使用步骤

1)创建项目并添加配置

项目结构

  • AspNetCoreConfiguration
    • Controllers/
      • TestConfigurationController.cs
    • Entity/
      • AppConfig.cs
      • SmtpSettings.cs
    • appsettings.json
      • appsettings.Development.json
    • config.xml
    • Program.cs

2)配置文件

  1. appsettings.json

    {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*","AppConfig": {"ApiName": "My API","MaxRecords": 100,"EnableCaching": false}
    }
    
  2. appsettings.Development.json(开发环境专用)

    {"AppConfig": {"EnableCaching": true},"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}}
    }
  3. config.xml(自定义XML配置源)

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration><AppConfig><ApiName>XMLApiName热重载222</ApiName><MaxRecords>200</MaxRecords><EnableCaching>false</EnableCaching></AppConfig>
    </configuration>
    

3)强类型配置类

  1. AppConfig.cs
    namespace AspNetCoreConfiguration.Entity
    {public class AppConfig{public string ApiName { get; set; }public int MaxRecords { get; set; }public bool EnableCaching { get; set; }}
    }
    
  2. SmtpSettings.cs
    namespace AspNetCoreConfiguration.Entity
    {public record SmtpSettings{public string Server { get; set; }public string UserName { get; set; }public string Password {  get; set; }}
    }
    

4)配置Program.cs

  1. 示例
    var builder = WebApplication.CreateBuilder(args);
    //注册配置文件及它们的优先级
    builder.Configuration.AddJsonFile("mysettings.json", optional: true, reloadOnChange: true).AddXmlFile("config.xml", optional: true, reloadOnChange: true).AddEnvironmentVariables("MyEnvironment_").AddCommandLine(args);
    builder.Services.AddControllers();
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();//配置数据库
    builder.WebHost.ConfigureAppConfiguration((hostCtx, configBuilder) =>
    {string connStr = builder.Configuration.GetSection("ConnectionString").Value;configBuilder.AddDbConfiguration(() => new SqlConnection(connStr), reloadOnChange: true, reloadInterval: TimeSpan.FromSeconds(2));});//配置Redis
    builder.Services.AddSingleton<IConnectionMultiplexer>(sp => {return ConnectionMultiplexer.Connect(builder.Configuration.GetSection("Redis").Value);
    });//绑定配置节到类
    builder.Services.Configure<AppConfig>(builder.Configuration.GetSection("AppConfig"));
    builder.Services.Configure<SmtpSettings>(builder.Configuration.GetSection("Smtp"));var app = builder.Build();if (app.Environment.IsDevelopment())
    {app.UseSwagger();app.UseSwaggerUI();//开发环境加载用户机密builder.Configuration.AddUserSecrets<Program>();
    }
    app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();
    

5)控制器中使用配置

  1. TestConfigurationController.cs
    using AspNetCoreConfiguration.Entity;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Options;
    using StackExchange.Redis;namespace AspNetCoreConfiguration.Controllers
    {[Route("api/[controller]/[action]")][ApiController]public class TestConfigurationController : ControllerBase{private readonly IWebHostEnvironment _webHostEnvironment;private readonly AppConfig appconfig;private readonly SmtpSettings smtpConfig;private readonly IConfiguration _configuration;private readonly ILogger<TestConfigurationController> logger;private readonly IConnectionMultiplexer connectionMultiplexer;public TestConfigurationController(IWebHostEnvironment webHostEnvironment,IOptionsSnapshot<AppConfig> options,//支持配置热重载IConfiguration configuration,ILogger<TestConfigurationController> logger,IConnectionMultiplexer connectionMultiplexer,IOptionsSnapshot<SmtpSettings> smtpConfigOptions){_webHostEnvironment = webHostEnvironment;appconfig = options.Value;_configuration = configuration;this.logger = logger;this.connectionMultiplexer = connectionMultiplexer;smtpConfig = smtpConfigOptions.Value;}[HttpGet]public string GetRedisOrSmtpConfig() {var pingDataBase = connectionMultiplexer.GetDatabase(0).Ping();logger.LogInformation($"DatabaseBase:{pingDataBase}");logger.LogInformation($"Smtp:{smtpConfig}");return "";}[HttpGet]public IActionResult GetConfigInfo(){//return Ok(new { //    ApiName=appconfig.ApiName,//    MaxRecords = appconfig.MaxRecords,//    EnableCaching = appconfig.EnableCaching//});logger.LogInformation($"强类型访问appconfig.XXX:{appconfig.ApiName}{appconfig.MaxRecords}{appconfig.EnableCaching}");logger.LogInformation($"直接访问_configuration[AppConfig:xxx]:{_configuration["AppConfig:ApiName"]},{_configuration["AppConfig:MaxRecords"]},{_configuration["AppConfig:EnableCaching"]}");return Ok(_configuration["AppConfig:ApiName"]+ _configuration["AppConfig:MaxRecords"] + _configuration["AppConfig:EnableCaching"]);}[HttpGet]public string GetEnvironmentConfigValue(){return _webHostEnvironment.EnvironmentName;}}
    }
    

6)配置优先级测试

通过不同方式覆盖配置值

  1. 命令行参数 (最高优先级):

    AppConfig:ApiName=Bat_ApiName AppConfig:MaxRecords=1000 AppConfig:EnableCaching=true
    

    在这里插入图片描述

  2. 环境变量 (使用双下划线 __):
    在这里插入图片描述

  3. 用户机密 (仅Development环境):

    //配置secrets.json{"AppConfig:ApiName": "user_Secrets_ApiName","AppConfig:MaxRecords": "3000","AppConfig:EnableCaching": "true",}
    

7)动态重载配置测试

  1. 修改 appsettings.jsonconfig.xml 中的值。
  2. 无需重启应用,刷新接口即可看到更新后的值(通过 IOptionsSnapshot<T> 注入)。

8)运行结果示例

  1. 假设配置优先级生效顺序为:用户机密>命令行 > 环境变量 > XML > appsettings.json
  2. 请求响应
    在这里插入图片描述

总结

  1. 配置源优先级:后添加的源优先级更高,用户机密 > 命令行 > 环境变量 > 自定义XML >
    appsettings.{Environment}.json > appsettings.json。
  2. 强类型绑定:通过 services.Configure() 注册,使用
    IOptions<T>/IOptionsSnapshot<T> 注入。
  3. 热重载:确保 reloadOnChange: true,并使用 IOptionsSnapshot<T> 或
    IOptionsMonitor<T>。
  4. 环境变量:使用双下划线 __ 替代层级符号(如 AppSettings__Title)。
  5. 用户机密:仅用于开发环境,通过 dotnet user-secrets 管理。
http://www.dtcms.com/wzjs/832054.html

相关文章:

  • 广州建网站的公司 白云区重庆专业做网站的公司
  • 网站权限设计方案今天的军事新闻
  • 创建一个网站的步骤是加盟类网站建设
  • 微信公众号怎么做链接网站吗福州网站设计大概多少钱
  • 网站建设意见征求汇报婚礼策划网站模板中文
  • 罗湖网站制作公司淘宝网站代做
  • 网站设计作品如何做外围网站的代理
  • 有那些可以自己做壁纸的网站北京单页营销型网站
  • 纯静态网站 后台wordpress自动注册
  • 企业门户网站建设思路网站建设续费是那些
  • 网站策划书结尾开发银行助学贷款系统
  • 西安专业做淘宝网站的公司营销型网站和传统网站区别
  • 外贸网站推广平台排名投标网招标网
  • 天津市城乡建设网站家装网站模板下载
  • index网站制作人被备案了会有什么后果
  • 网站负责人核验照外贸产品网站建设
  • 做网站开什么端口广告公司创意广告语
  • 成都网站优化排名建设通官网app下载
  • 金坛市常州网络推广福建企业seo推广
  • 临潼区建设局网站一起做业官方网站
  • 58同城济南网站建设如何做互联网营销
  • 兖矿东华建设网站免费网站空间免备案
  • 类似饿了么的网站怎么做.net 网站开发教程
  • ui设计的网站物语系列短篇资源WordPress
  • 常用的网站类型有哪些类型有哪些类型有哪些金融网站设计方向
  • 周口网站建设网站新闻置顶怎么做
  • 抖音营销网站建设价格网站建设教程试题
  • 建设网站包括哪些费用学校网站建设考评办法
  • 长春火车站附近美食对象存储 做视频网站
  • 济南建设银行网站帮做网站的