ASP.NET Core中的配置详解

关于ASP.NET Core中的配置详解,我们需要从以下几个方面进行讲解:

  1. 配置文件
  2. 环境变量
  3. 命令行参数
  4. 配置的获取方式

首先,我们需要知道ASP.NET Core中的配置是通过IConfiguration接口来获取的。在ASP.NET Core框架中,配置文件默认是appsettings.json文件,它包含了应用程序的各种配置信息,我们可以通过IConfiguration接口读取其中的配置。这个配置文件的路径可以通过以下方式修改:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.SetBasePath(Directory.GetCurrentDirectory());
            config.AddJsonFile("myconfig.json", optional: true, reloadOnChange: true);
        })
        .UseStartup<Startup>();

在上述方法中,我们可以看到我们使用了.ConfigureAppConfiguration的方式来指定了配置文件的路径,同时我们还支持了多个配置文件的读取,这样我们就可以将不同环境下的配置信息分别存在不同的文件中。

接下来,我们可以使用以下代码片段获取配置信息:

public class HomeController : Controller
{
    private readonly IConfiguration _configuration;

    public HomeController(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public IActionResult Index()
    {
        // 读取配置信息
        string value = _configuration["mykey"];
        return View(value);
    }
}

我们可以通过类的构造函数获取IConfiguration实例,并通过索引器方法读取特定的配置项。

除了配置文件,我们还可以通过环境变量来获取配置信息。在ASP.NET Core中,我们可以通过如下方式修改读取配置文件时的环境变量:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.SetBasePath(Directory.GetCurrentDirectory());
            config.AddJsonFile("myconfig.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"myconfig.{hostingContext.HostingEnvironment.Environment}json", optional: true);
            config.AddEnvironmentVariables("MY_APP_");
        })
        .UseStartup<Startup>();

我们通过.AddEnvironmentVariables()方法将环境变量的前缀定义为MY_APP_,这意味着在我们读取配置信息时,可以通过环境变量MY_APP_MYKEY来获取配置信息中的mykey

除了环境变量,我们还可以通过命令行参数来指定配置信息。我们可以通过以下代码将命令行参数与配置文件中的配置信息结合起来:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.SetBasePath(Directory.GetCurrentDirectory());
            config.AddJsonFile("myconfig.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"myconfig.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true);
            config.AddEnvironmentVariables("MY_APP_");
            config.AddCommandLine(args);
        })
        .UseStartup<Startup>();

在以上代码中我们调用了config.AddCommandLine(args)方法,这使得我们可以通过命令行参数来覆盖配置文件中的配置信息,例如我们可以使用以下命令来覆盖mykey配置项的值:

dotnet run --mykey=myvalue

最后,我们需要了解如何获取不同配置信息的获取方式。在ASP.NET Core中,我们可以通过以下方法来获取不同类型的配置信息:

public class HomeController : Controller
{
    private readonly IConfiguration _configuration;

    public HomeController(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public IActionResult Index()
    {
        // 获取AppSettings节点
        IConfigurationSection appSettings = _configuration.GetSection("AppSettings");

        // 获取连接字符串
        string connectionString = _configuration.GetConnectionString("DefaultConnection");

        // 获取数组
        string[] items = _configuration.GetSection("MyArray").Get<string[]>();

        return View();
    }
}

以上代码展示了如何获取AppSettings节点、连接字符串和数组等不同类型的配置信息。

好了,以上就是ASP.NET Core中配置详解的攻略。下面我们来看两个示例,让大家更好地理解:

示例1:

假设我们有一个ASP.NET Core Web应用程序,它需要连接到一个数据库中。在这个应用程序中,我们使用了IConfiguration接口来获取配置信息。在appsettings.json文件中,我们定义了一个名为DefaultConnection的连接字符串。同时,我们希望允许运行时覆盖这个连接字符串,这样我们就可以在本地开发时使用不同的数据库,而在生产环境中使用其它的数据库。我们可以通过以下代码来实现:

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        string connectionString = Configuration.GetConnectionString("DefaultConnection");
        // ...
    }
}

在上述代码中,我们不仅使用了.GetConnectionString()方法来读取连接字符串,同时也支持了运行时覆盖,这样我们就可以通过命令行参数或环境变量来指定特定的数据库连接字符串。

示例2:

假设我们有一个ASP.NET Core控制台应用程序,它需要从一个配置文件中读取配置。同时,我们希望支持多个配置文件,并且可以通过环境变量来指定特定的配置文件。以下是一个示例代码:

public class Program
{
    public static void Main(string[] args)
    {
        var configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", true, true)
            .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("APP_ENVIRONMENT")}.json", true, true)
            .AddEnvironmentVariables("MYAPP_")
            .AddCommandLine(args)
            .Build();

        // 读取配置信息
        var value = configuration["MyKey"];
    }
}

以上代码中,我们使用.AddJsonFile()方法加载配置文件,并支持了多个配置文件和通过环境变量来指定配置文件的细节。同时,我们也支持了通过命令行参数来修改特定的配置信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core中的配置详解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 百度云天工让智能计算从云走向端

    这段时间我们的朋友圈被区块链、人工智能刷屏,而我想说,朋友,下一个风口,别忘了还有边缘计算。   边缘计算一点都不“边缘” 根据IDC的预测,到2025年,将会有820亿的设备数量,数十上百亿计的设备接入到无边界网络之中,并且物联网时代会实时产生大量的数据。Forrester Research的一项研究表明,大约35%的生产IoT应用的公司希望拥有边缘计算相…

    云计算 2023年4月13日
    00
  • 云管、SDN、OpenStack组成的虚拟化云计算:虚拟存储

      卷: “volume”: { “attachments”: [], “availability_zone”: “nova”, “bootable”: “false”, “consistencygroup_id”: null, “created_at”: “2018-11-29T06:50:07.770785”, “description”: null, …

    2023年4月10日
    00
  • 云计算管理平台之OpenStack简介及基础环境搭建

    简单说openstack是云计算管理平台,主要对云环境中的虚拟机做增删查改;它能够将多台物理设备的资源(cpu/内存等)整合成一个大的资源池,然后根据openstack提供的api接口向用户提供使用;用户可以根据openstack提供的资源池接口来启动虚拟机,管理虚拟机;openstack 主要组成由控制节点和计算节点组成;其中控制节点由多个组件组成,每个组…

    云计算 2023年4月15日
    00
  • Javascript & DHTML DOM基础和基本API第4/5页

    《Javascript & DHTML DOM基础和基本API》的4/5页主要介绍了JavaScript中DOM的基础知识和基本API的使用。 DOM的基础知识 DOM是文档对象模型(Document Object Model)的缩写,它是一种表示和操作HTML和XML文档的标准编程接口,可以使用JavaScript来控制web页面的内容、结构和样式…

    云计算 2023年5月17日
    00
  • 深入理解云计算OpenAPI体系

    ​简介: 就云计算的API来看,当前并没有类似POSIX这样的API标准,基本上各大厂商各自为政。当然,有一些业界主流标准例如OAS获得多数云厂商的支持,但云厂商本身的API却往往由于历史原因、技术路线原因百花齐放,例如AWS的OpenAPI属于RPC风格,而Azure则是WebService风格,GCP则是基于gRPC为主流。技术方面的论述很多,本文更想从…

    云计算 2023年4月11日
    00
  • 普元云计算-基于微服务的日志中心设计、实现与关键配置

      转载本文需注明出处:微信公众号EAWorld,违者必究。   引言: 日志向来都是运维以及开发人员最关心的问题。运维人员可以及时的通过相关日志信息发现系统隐患、系统故障并及时安排人员处理解决问题。开发人员解决问题离不开日志信息的协助定位。没有日志就相当于没有了眼睛,失去了方向。   微服务日渐火热,享受微服务架构带来的种种好处的同时也要承担起由微服务带来…

    云计算 2023年4月11日
    00
  • 云娜:从计算、存储角度,谈网易数据治理工具产品实践

    导读:在公司内部,业务线经常面临数据有哪些、质量如何、是否可用、能产生多大价值的困惑,并且,随着数据量的增加,计算和存储资源面临瓶颈。本次将围绕数据治理重点关注的计算、存储等方面,分享数据治理的产品实践。通过分享,一方面可以了解当前业务线主要面临的待治理的数据问题;另一方面,从计算、存储等主要方面,了解数据治理需要重点关注的内容,同时,对数据治理的整体产品实…

    2023年4月9日
    00
  • 更安全、更低耗的微服务架构改造之道

    摘要:微服务改造是政企客户云原生演进的重头戏,但如何做到成本低、安全性高、性能不变、方便调用等,却是一门学问。本文讲述华为云Stack的解决之道。 本文分享自华为云社区《【华为云Stack】【大架光临】第17期:更安全、更低耗的微服务架构改造之道》,作者:杨奕 华为云技术规划专家。 在以往的文章《云原生时代,政企混合云场景IT监控和诊断的难点和应对之道》中,…

    云计算 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部