using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.IO;
namespace New_College
{
public class Program
{
///
/// 加载配置文件,构建IConfigurationRoot
///
private static readonly IConfigurationBuilder ConfigurationBuilder = new ConfigurationBuilder();
///
/// 获取配置文件中的内容,继承自IConfiguration
///
private static IConfigurationRoot _configuration;
public static void Main(string[] args)
{
_configuration = ConfigurationBuilder
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(cfg =>
{
cfg.Path = "appsettings.json";
cfg.ReloadOnChange = true;
cfg.Optional = false;
})
//Build方法的调用要在AddJsonFile之后,否则生成的IConfigurationRoot实例的
//Providers属性不包含任何元素而导致无法读取文件中的信息
.Build();
var url = _configuration.GetSection("urls");
//初始化默认主机Builder
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseStartup()
.UseUrls(url.Value)
.ConfigureLogging((hostingContext, builder) =>
{
//过滤掉系统默认的一些日志
builder.AddFilter("System", LogLevel.Error);
builder.AddFilter("Microsoft", LogLevel.Error);
builder.AddFilter("New_College.AuthHelper.ApiResponseHandler", LogLevel.Error);
//可配置文件
var path = Path.Combine(Directory.GetCurrentDirectory(), "Log4net.config");
builder.AddLog4Net(path);
});
})
// 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的,将返回一个构造的WebHost,最终生成宿主。
.Build()
// 运行 web 应用程序并阻止调用线程, 直到主机关闭。
// ※※※※ 有异常,查看 Log 文件夹下的异常日志 ※※※※
.Run();
}
}
}