Program.cs(其实里面服务注入和中间件的配置可以单独拿到Startup.cs中)
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace Test.Core
{
class Program
{
static Dictionary<
string,
string> memorySource =
new Dictionary<
string,
string>
{
[
"Format:DateTime:LongDatePattern"] =
"dddd, MMMM d, yyyy",
[
"Format:DateTime:LongTimePattern"] =
"h:mm:ss tt",
[
"Format:DateTime:ShortDatePattern"] =
"M/d/yyyy",
[
"Format:DateTime:ShortTimePattern"] =
"h:mm tt",
[
"Format:CurrencyDecimal:Digits"] =
"2",
[
"Format:CurrencyDecimal:Symbol"] =
"$",
};
static IConfigurationRoot configuration =
new ConfigurationBuilder().AddInMemoryCollection(memorySource).Build();
public static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseConfiguration(configuration)
.ConfigureAppConfiguration(builder => builder
.AddEnvironmentVariables()
.AddJsonFile(
"haha.json",
true,
true))
.ConfigureAppConfiguration((context, builder) => builder
.AddEnvironmentVariables()
.AddJsonFile(
"haha.json",
false,
true))
.ConfigureLogging(builder => builder
.AddConfiguration(configuration))
.ConfigureLogging((context, builder) => builder
.AddConfiguration(configuration)
.AddConfiguration(context.Configuration))
.ConfigureServices(ConfigureServiceWithConfig)
.Configure(Configure)
.Build()
.Run();
}
#region 应用配置信息项设定
private static void ConfigureApp(IConfigurationBuilder builder)
{
builder
.AddEnvironmentVariables()
.AddJsonFile(
"haha.json",
true,
true);
}
private static void ConfigureAppConfiguration(WebHostBuilderContext context, IConfigurationBuilder builder)
{
builder
.AddEnvironmentVariables()
.AddJsonFile(
"haha.json",
true,
true);
}
#endregion
#region 应用日志配置项设定
private static void ConfigureLog(ILoggingBuilder builder)
{
builder.AddConfiguration(configuration);
}
private static void ConfigureLogging(WebHostBuilderContext context, ILoggingBuilder builder)
{
builder.AddConfiguration(configuration)
.AddConfiguration(context.Configuration);
}
#endregion
#region 应用服务注入配置 -> 当需要注册的服务很多的时候,框架便设计成可以单独开辟一个Startup.cs文件,将此部分代码放进去
private static void ConfigureService(IServiceCollection services)
{
services.AddOptions();
}
private static void ConfigureServiceWithConfig(WebHostBuilderContext context, IServiceCollection services)
{
services.AddOptions()
.Configure<JsonConfig>(context.Configuration.GetSection(
"Logging"));
}
#endregion
#region 应用中间件配置-> 当需要注册的中间件很多的时候,框架便设计成可以单独开辟一个Startup.cs文件,将此部分代码放进去
private static void Configure(IApplicationBuilder builder)
{
builder.Run(
async context =>
{
context.Response.Headers[
"Content-Type"] =
"text/html; charset=utf-8";
await context.Response.WriteAsync($
"测试专用{ (context.RequestServices.GetRequiredService<IOptions<JsonConfig>>().Value.IncludeScopes == true ? "kong
" : "true") }");
});
}
#endregion
}
}
其他文件
Json文件
{
"
Logging":
{
"IncludeScopes": true,
"LogLevel": {
"Default": "Information"
}
}
}
Json对应类
{
"
Logging":
{
"IncludeScopes": true,
"LogLevel": {
"Default": "Information"
}
}
}