You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.7 KiB
C#

8 months ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
4 months ago
using System.Threading;
8 months ago
using System.Threading.Tasks;
4 months ago
using System.Diagnostics;
8 months ago
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.EnvironmentVariables;
using Microsoft.Extensions.Configuration.CommandLine;
using Microsoft.Extensions.Configuration.Memory;
using Microsoft.Extensions.Configuration.Xml;
using Microsoft.Extensions.Configuration.Ini;
using Microsoft.Extensions.Configuration.Binder;
using Microsoft.Extensions.Configuration.KeyPerFile;
using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.Configuration.UserSecrets;
using Microsoft.Extensions.Options;
using NetEscapades.Configuration.Yaml;
using Microsoft.Extensions.DependencyInjection;
4 months ago
using System.Reflection;
8 months ago
namespace HttpClientStudy.Config
{
public static class WebApiConfigExtensions
{
/// <summary>
/// 添加WebApi配置文件
/// </summary>
public static IConfigurationBuilder AddWebApiConfiguration(this IConfigurationBuilder configuration)
8 months ago
{
//配置文件名称
configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
configuration.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true);
4 months ago
//配置文件根目录配置项目Dll文件所在目录(被其它项目引用时引用后dll的文件所在目录)
string configDellPath = Path.GetDirectoryName(typeof(WebApiConfig).Assembly.Location) ?? Directory.GetCurrentDirectory();
configuration.SetBasePath(configDellPath);
Console.WriteLine($"配置文件根目录:{configDellPath}");
8 months ago
configuration.AddJsonFile($"ConfigFiles/Config.json", optional: false, reloadOnChange: true);
configuration.AddJsonFile($"ConfigFiles/Config.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true);
8 months ago
return configuration;
}
/// <summary>
/// 使用选项模式
/// </summary>
/// <param name="serviceProvider"></param>
/// <returns></returns>
public static IServiceCollection AddWebApiOptions(this IServiceCollection services)
{
8 months ago
services.AddOptions();
8 months ago
8 months ago
var configuration = services.BuildServiceProvider().GetService<IConfiguration>();
if (configuration == null)
{
throw new InvalidOperationException("Configuration is not configured.");
}
8 months ago
services.Configure<WebApiConfig>(configuration.GetSection("WebApi"));
8 months ago
return services;
}
}
}