using Estsh.Client.Common.HttpClientUtil;
using Estsh.Client.Common.ServiceUtil;
using Estsh.Client.Common.Util;
using log4net;
using log4net.Repository;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Estsh.Client
{
internal static class Program
{
public static ILoggerRepository LoggerRepository { get; set; }
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
ServiceCollection services = new ServiceCollection();
ConfigureServices(services);
//初始化log4net
LoggerRepository = LogManager.CreateRepository("NETCoreRepository");
LogHelper.SetConfig(LoggerRepository, "log4net.config");
//读取本地缓存
LocalCache.ReadCache();
//Application.Run(new Form1());
Application.Run(new Login());
}
///
/// 在DI容器中注册所有的服务类型
///
///
private static void ConfigureServices(ServiceCollection services)
{
//register configuration
IConfigurationBuilder cfgBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")}.json", optional: true, reloadOnChange: false);
IConfiguration configuration = cfgBuilder.Build();
services.AddSingleton(configuration);
services.AddHttpClient(configuration.GetSection("HttpClientName").Value, c =>
{
c.BaseAddress = new Uri(configuration.GetSection("WebApiUrl").Value);
c.Timeout = TimeSpan.FromSeconds(50);
}).SetHandlerLifetime(TimeSpan.FromMinutes(Convert.ToDouble(configuration.GetSection("HttpClientHandlerLifetime").Value)));
var serviceProvider = services.BuildServiceProvider();
HttpClientHelper.InitService(serviceProvider, configuration.GetSection("HttpClientName").Value);
ServiceProviderHelper.InitServiceProvider(serviceProvider);
////Create logger instance
//var serilogLogger = new LoggerConfiguration()
// .ReadFrom.Configuration(configuration)
// .Enrich.FromLogContext()
// .CreateLogger();
////register logger
//services.AddLogging(builder => {
// object p = builder.AddSerilog(logger: serilogLogger, dispose: true);
//});
}
}
}