.NET 配置指南

.NET项目中添加配置是一个常见的需求。配置可以帮助管理应用程序的设置,如数据库连接字符串、API密钥等。本文将从最简单的Web API项目开始,然后探讨如何在控制台应用程序或测试项目中添加配置。

Web API项目配置

在Visual Studio中创建一个新的Web API项目时,会生成一些默认文件。与配置相关的文件有:

  • appsettings.json:配置文件,将在这里添加新的配置项。
  • Program.cs:启动文件,负责设置应用程序的启动逻辑。
  • WeatherForecastController.cs:Visual Studio创建的默认示例控制器。将修改它以读取配置。

在配置文件中添加自定义的ApiSettings节。appsettings.json文件应该类似于这样:

{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ApiSettings": { "ApiName": "My Awesome API" } }

自定义的配置节叫做ApiSettings,包含一个字符串字段ApiName。让定义一个具有相同结构的类:

public class ApiSettings { public string ApiName { get; set; } }

如果使用的是低于.NET6的版本,这一步将在Startup.csConfigureServices方法中完成。

var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // 注册ApiSettings配置节 builder.Services.Configure<ApiSettings>(builder.Configuration.GetSection("ApiSettings"));

现在已经完成了所有繁重的工作,可以通过将配置注入到控制器或服务中来使用它。为了演示,将把它注入到自动生成的WeatherForecastController中。

public WeatherForecastController(ILogger<WeatherForecastController> logger, IOptions<ApiSettings> options) { _logger = logger; _apiSettings = options.Value; }

在构造函数中设置断点,观察options已经被填充了来自JSON配置的值,这要归功于依赖注入和在上一步中所做的最小配置设置。不要忘记定义配置参数IOptions<T>而不是仅仅T,这是新手常见的错误。记住,.NET Core(现在只是.NET)中的配置是基于IOptions的。

非API项目的配置

将使用以下核心包来开始:

  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.DependencyInjection.Abstractions
  • Microsoft.Extensions.Options

可以自己决定使用哪个版本,但这些是开始的基础包。

建议将Web API项目的appsettings.json作为链接添加到控制台或测试文件中,以节省重新配置的麻烦。哦,还需要添加对包含ApiSettings类的项目的引用——很可能是Web API项目,如果一直按照这个指南操作的话。

using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using SampleNet6Api; var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); var services = new ServiceCollection() .AddOptions() .Configure<ApiSettings>(config.GetSection("ApiSettings")) .BuildServiceProvider(); var apiSettings = services.GetService<IOptions<ApiSettings>>(); Console.WriteLine(apiSettings.Value.ApiName); Console.ReadLine();

以上是在控制台项目的Program.cs中的内容,但对于测试项目来说也会非常相似。

首先,创建一个ConfigurationBuilder并用JSON文件中的配置填充它。然后,创建一个ServiceCollection.NETDI容器),向其中添加IOptions并注册ApiSettings类。这两步(不包括Configure部分)在Web项目中会自动在幕后进行。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485