网站运营分析报告,网站优化公司有哪些,商务网站建设教程,新手做网站需要多久#x1f433;简介
IConfiguration 是 ASP.NET Core 中的一个接口#xff0c;用于表示配置集合。以下是关于 IConfiguration 的详细介绍#xff1a;
作用#xff1a;IConfiguration 允许开发人员从各种来源#xff08;如文件、环境变量、命令行参数等#xff09;读取应用…简介
IConfiguration 是 ASP.NET Core 中的一个接口用于表示配置集合。以下是关于 IConfiguration 的详细介绍
作用IConfiguration 允许开发人员从各种来源如文件、环境变量、命令行参数等读取应用程序的配置信息。这些配置信息可以用于设置数据库连接字符串、API 密钥、日志级别等。实现通常我们不直接实例化 IConfiguration 接口而是通过依赖注入DI来获取其实例。在 Startup 类的构造函数中可以通过依赖注入得到 IConfiguration 实例并通过它来访问配置数据。使用方式在 ASP.NET Core 应用程序中通常会创建一个 IConfigurationBuilder 实例来构建 IConfiguration。IConfigurationBuilder 是一个用于构建 IConfiguration 实例的辅助类它提供了多种方法来添加不同的配置源。配置源IConfiguration 支持多种配置源包括但不限于 JSON 文件、环境变量、内存中的键值对、命令行参数等。这些配置源可以灵活组合以满足不同的应用场景需求。强类型配置虽然 IConfiguration 本身是一个键值对集合但 ASP.NET Core 还提供了一种机制可以将配置数据绑定到强类型的类这样可以更方便地访问和使用配置数据。
实例演示
因为在Asp.Net项目中 IConfiguration 已经被默认注册到我们的服务中因此在类中可以直接通过下面的示例代码中的构造函数注入方式使用 IConfiguration
public class HelloService : IHelloService
{private readonly IConfiguration _configuration;public HelloService(IConfiguration configuration){_configuration configuration;}public void Hello(){foreach (var keyValuePair in _configuration.AsEnumerable()){Console.WriteLine($Key:{keyValuePair.Key},value:{keyValuePair.Value});}}
}
在上面代码的Hello方法中我们遍历了_configuration中的键值对并将它们打印到控制台可以看到控制台中有非常多的内容ASP.NET项目通常会默认添加一些配置。这些配置包括应用程序设置、日志打印级别、依赖注入等等 在Program中我们可以通过 builder.Configuration.Sources.Clear(); 清除所有已添加的配置源。
通过 builder.Configuration.AddJsonFile 将一个 JSON 文件作为配置源添加到配置中
将 optional 设置为true 指定配置文件中的某个部分或设置项是可选的。这意味着如果在配置文件中找不到这个设置应用程序仍然可以正常运行而不会抛出异常。
如我下面指定的 appsettings.json 文件不存在由于optional设置为true配置系统不会抛出异常而是继续加载其他配置源。
reloadOnChange 设置为 true 表示文件发生更改时会自动重新加载
builder.Configuration.Sources.Clear();
builder.Configuration.AddJsonFile(appsettings.json, optional: true, reloadOnChange: true); 此时重启项目Configuration中的配置就只有 appsettings.json 中的内容了。 我们将刚才的代码修改一下 通过 Environment.MachineName 获取当前计算机的主机名如果你的计算机主机名为Development的话此时重启项目 appsettings.Development.json 就会覆盖掉我们 appsettings.json 中的节点内容。
builder.Configuration.Sources.Clear();
builder.Configuration.AddJsonFile(appsettings.json, optional: true, reloadOnChange: true).
AddJsonFile($appsettings.{Environment.MachineName}.json, optional: true, reloadOnChange: true);
但是通常我们的主机名称可能并不是Development我们还有另一种方式因为在IDE的调试配置中有通过命令行方式添加一个 ASPNETCORE_ENVIRONMENTDevelopment 的变量。 因此我们可以通过 Configuration.AddEnvironmentVariables() 这种方式将当前主机的环境变量和上面的命令行设置的环境变量添加到应用程序的配置中然后通过环境变量来判断当前的环境变量是什么。
builder.Configuration.Sources.Clear();
builder.Configuration.AddEnvironmentVariables();builder.Configuration.AddJsonFile(appsettings.json, optional: true, reloadOnChange: true).
AddJsonFile($appsettings.{Environment.GetEnvironmentVariable(ASPNETCORE_ENVIRONMENT)}.json, optional: true, reloadOnChange: true);这样配置中就有我们设置中的环境变量等信息 appsettings.Development.json 就可以成功的覆盖我们的配置 还有当前主机的环境变量也成功被输出如下图中我的其中一条环境变量JAVA_HOME为例