113 lines
3.9 KiB
C#
113 lines
3.9 KiB
C#
using System;
|
||
using Autofac.Extensions.DependencyInjection;
|
||
using Microsoft.AspNetCore.Hosting;
|
||
using Microsoft.Extensions.Hosting;
|
||
using Microsoft.Extensions.Configuration;
|
||
using Serilog;
|
||
using MediatR;
|
||
using IRaCIS.Core.Application.MediatR.Handlers;
|
||
using System.Threading.Tasks;
|
||
using MassTransit;
|
||
using MassTransit.NewIdProviders;
|
||
using System.IO;
|
||
using IRaCIS.Core.Domain.Share;
|
||
using IRaCIS.Core.Infra.EFCore;
|
||
using IRaCIS.Core.Application.Helper;
|
||
using System.Runtime.InteropServices;
|
||
|
||
namespace IRaCIS.Core.API
|
||
{
|
||
public class Program1
|
||
{
|
||
public readonly string environment;
|
||
public static async Task Main(string[] args)
|
||
{
|
||
try
|
||
{
|
||
//以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数)
|
||
var config = new ConfigurationBuilder()
|
||
.AddEnvironmentVariables()
|
||
.Build();
|
||
|
||
var enviromentName = config["ASPNETCORE_ENVIRONMENT"];
|
||
|
||
if (string.IsNullOrWhiteSpace(enviromentName))
|
||
{
|
||
|
||
var index = Array.IndexOf(args, "--env");
|
||
enviromentName = index > -1
|
||
? args[index + 1]
|
||
: "Development";
|
||
}
|
||
|
||
//Dicom 浏览
|
||
//ImageManager.SetImplementation(WinFormsImageManager.Instance);
|
||
|
||
var host = CreateHostBuilder(args)
|
||
.UseEnvironment(enviromentName) //命令行传入环境
|
||
.ConfigureAppConfiguration((hostContext, config) =>
|
||
{
|
||
|
||
//Console.WriteLine(hostContext.HostingEnvironment.EnvironmentName);
|
||
config.AddJsonFile("appsettings.json", false, true)
|
||
.AddJsonFile($"appsettings.{enviromentName}.json", false, true);
|
||
})
|
||
.Build();
|
||
|
||
//// Serilog
|
||
SerilogExtension.AddSerilogSetup(enviromentName, host.Services);
|
||
|
||
Log.Logger.Warning($"当前环境:{enviromentName}");
|
||
|
||
|
||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||
{
|
||
Log.Logger.Warning($"当前部署平台环境:windows");
|
||
}
|
||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||
{
|
||
Log.Logger.Warning($"当前部署平台环境:linux");
|
||
}
|
||
else
|
||
{
|
||
Log.Logger.Warning($"当前部署平台环境:OSX or FreeBSD");
|
||
}
|
||
|
||
NewId.SetProcessIdProvider(new CurrentProcessIdProvider());
|
||
|
||
|
||
host.Run();
|
||
|
||
|
||
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
|
||
Log.Logger.Error(e.InnerException is null ? e.Message + e.StackTrace : e.InnerException?.Message + e.InnerException?.StackTrace);
|
||
}
|
||
|
||
}
|
||
|
||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||
Host.CreateDefaultBuilder(args)
|
||
.UseWindowsService()
|
||
.ConfigureWebHostDefaults(webBuilder =>
|
||
{
|
||
webBuilder.ConfigureKestrel((context, options) =>
|
||
{
|
||
//设置应用服务器Kestrel请求体最大为1GB // if don't set default value is: 30 MB
|
||
options.Limits.MaxRequestBodySize = long.MaxValue;
|
||
options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30);
|
||
options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20);
|
||
|
||
});
|
||
//webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合
|
||
webBuilder.UseStartup<Startup>();
|
||
}).UseSerilog()
|
||
.UseServiceProviderFactory(new AutofacServiceProviderFactory());
|
||
|
||
|
||
}
|
||
}
|