|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
|
|
|
|
namespace HttpClientStudy.Config
|
|
|
|
|
{
|
|
|
|
|
public static class WebApiConfigExtensions
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 添加WebApi配置文件
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static IConfigurationBuilder AddWebApiConfiguration(this IConfigurationBuilder configuration)
|
|
|
|
|
{
|
|
|
|
|
/*
|
|
|
|
|
//应用程序信息
|
|
|
|
|
|
|
|
|
|
//程序的上下文基准目录:通常是应用程序启动时的目录,也可以理解为包含可执行文件的目录
|
|
|
|
|
Console.WriteLine($"应用程序的基准目录[AppContext.BaseDirectory] = {AppContext.BaseDirectory}");
|
|
|
|
|
|
|
|
|
|
//程序安装或启动基目录
|
|
|
|
|
Console.WriteLine($"程序安装或启动基目录[AppDomain.CurrentDomain.SetupInformation.ApplicationBase]:{AppDomain.CurrentDomain.SetupInformation.ApplicationBase}");
|
|
|
|
|
|
|
|
|
|
//进程主模块的完整路径
|
|
|
|
|
Console.WriteLine($"进程主模块的完整路径[Process.GetCurrentProcess().MainModule.FileName]:{Process.GetCurrentProcess()?.MainModule?.FileName}");
|
|
|
|
|
|
|
|
|
|
//环境变量:当前工作目录
|
|
|
|
|
Console.WriteLine($"当前工作目录[Environment.CurrentDirectory]:{Environment.CurrentDirectory}");
|
|
|
|
|
|
|
|
|
|
//文件当前目录:当前工作目录:不一定是启动目录
|
|
|
|
|
Console.WriteLine($"文件当前目录[Directory.GetCurrentDirectory()]:{Directory.GetCurrentDirectory()}");
|
|
|
|
|
|
|
|
|
|
//可执行程序集目录
|
|
|
|
|
Console.WriteLine($"可执行程序集目录[Assembly.GetExecutingAssembly().Location]:{Assembly.GetExecutingAssembly().Location}");
|
|
|
|
|
|
|
|
|
|
//指定程序集目录:可以是引用类库、指定类所在类库目录
|
|
|
|
|
Console.WriteLine($"指定程序集目录[Type.Assembly.Location]:{typeof(WebApiConfigExtensions).Assembly.Location}");
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//配置文件根目录:配置项目Dll文件所在目录(被其它项目引用时,引用后dll的文件所在目录)
|
|
|
|
|
string configDellPath = Path.GetDirectoryName(typeof(WebApiConfig).Assembly.Location) ?? Directory.GetCurrentDirectory();
|
|
|
|
|
configuration.SetBasePath(configDellPath);
|
|
|
|
|
Console.WriteLine($"配置文件根目录:{configDellPath}");
|
|
|
|
|
|
|
|
|
|
configuration.AddJsonFile($"ConfigFiles/Config.json", optional: false, reloadOnChange: true);
|
|
|
|
|
configuration.AddJsonFile($"ConfigFiles/Config.{System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true);
|
|
|
|
|
|
|
|
|
|
return configuration;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 使用选项模式
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="serviceProvider"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static IServiceCollection AddWebApiOptions(this IServiceCollection services)
|
|
|
|
|
{
|
|
|
|
|
services.AddOptions();
|
|
|
|
|
|
|
|
|
|
var configuration = services.BuildServiceProvider().GetService<IConfiguration>();
|
|
|
|
|
if (configuration == null)
|
|
|
|
|
{
|
|
|
|
|
throw new InvalidOperationException("Configuration is not configured.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
services.Configure<WebApiConfig>(configuration.GetSection("WebApi"));
|
|
|
|
|
|
|
|
|
|
return services;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|