using FSO.Server.Common; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Logging; namespace FSO.Server.Api.Core { public class Program { public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); host.Run(); } public static IAPILifetime RunAsync(string[] args) { var host = CreateWebHostBuilder(args).Build(); var lifetime = new APIControl((IApplicationLifetime)host.Services.GetService(typeof(IApplicationLifetime))); host.Start(); return lifetime; } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseUrls(args[0]) .ConfigureLogging(x => { x.SetMinimumLevel(LogLevel.None); }) .UseKestrel(options => { options.Limits.MaxRequestBodySize = 500000000; }) .SuppressStatusMessages(true) .UseStartup(); } public class APIControl : IAPILifetime { private IApplicationLifetime Lifetime; public APIControl(IApplicationLifetime lifetime) { Lifetime = lifetime; } public void Stop() { Lifetime.StopApplication(); } } }