using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using JT808.Protocol; using JT808.Protocol.Interfaces; using JT809.Protocol; using JT808.Protocol.Extensions.JT1078; using JT808.Protocol.Extensions.JTActiveSafety; using JT809.Protocol.Extensions.JT1078; using Newtonsoft.Json.Serialization; using System; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using JTTools.JsonConvert; namespace JTTools { public class Program { public static void Main(string[] args) { Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureServices((hostingContext, services) => { services.AddControllers() //Microsoft.AspNetCore.Mvc.NewtonsoftJson .AddNewtonsoftJson(jsonOptions => { jsonOptions.SerializerSettings.Converters.Add(new ByteArrayHexConverter()); jsonOptions.SerializerSettings.ContractResolver = new DefaultContractResolver(); //jsonOptions.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; }) //.AddJsonOptions(jsonOptions => //{ // jsonOptions.JsonSerializerOptions.MaxDepth = 64; // jsonOptions.JsonSerializerOptions.Converters.Add(new ByteArrayHexTextJsonConverter()); //}) ; services.AddCors(options => options.AddPolicy("Domain", builder => builder.WithOrigins(hostingContext.Configuration.GetSection("AllowedOrigins").Value.Split(",")) .AllowAnyMethod() .AllowAnyHeader() .AllowAnyOrigin())); }) .ConfigureKestrel(ksOptions => { ksOptions.ListenAnyIP(18888); }) .ConfigureLogging((context, logging) => { //if (Environment.OSVersion.Platform == PlatformID.Unix) //{ // NLog.LogManager.LoadConfiguration("Configs/nlog.unix.config"); //} //else //{ // NLog.LogManager.LoadConfiguration("Configs/nlog.win.config"); //} //logging.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true }); //logging.SetMinimumLevel(LogLevel.Trace); }) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory); config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); }) .Configure(app => { app.UseRouting(); app.UseCors("Domain"); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }); }) .ConfigureServices(services => { services.AddJT808Configure(); services.AddJT808Configure(new JT808_JTActiveSafety_Config()) .AddJTActiveSafetyConfigure(); services.AddJT808Configure(new JT808_JT1078_Config()) .AddJT1078Configure(); services.AddJT809Configure() .AddJT1078Configure(); }) .Build() .Run(); } } public class JT808_JTActiveSafety_Config : GlobalConfigBase { public override string ConfigId { get; protected set; } = "JT808_JTActiveSafety_Config"; } public class JT808_JT1078_Config : GlobalConfigBase { public override string ConfigId { get; protected set; } = "JT808_JT1078_Config"; } }