using IESHybridCloud.Services; using MathNet.Numerics; using Microsoft.Extensions.DependencyInjection.Extensions; using Serilog; using System.Configuration; using System.Text.Json; using TEAMModelOS.SDK; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.DI.Device; namespace IESHybridCloud { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); //防止编译后的appsettings.json 文件内容,在重新部署的时候,因为不同的环境导致被覆盖的问题, //所以在正式环境中指定appsettings-prod.json一个本地开发环境不存在的文件,以达到不会被覆盖的问题, //即使在生产环境中未配置appsettings-prod.json 也不影响启动,因为会按照appsettings.json的配置启动 #if !DEBUG builder.Host.ConfigureAppConfiguration((context, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddJsonFile("appsettings-prod.json", optional: true, reloadOnChange: true); }); #endif Log.Logger = new LoggerConfiguration().MinimumLevel.Debug().WriteTo.Console(outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] ({ThreadId}) {Message}{NewLine}{Exception}") .WriteTo.File("logs/log-.log", rollingInterval: RollingInterval.Day).CreateLogger(); builder.Host.UseSerilog(); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddHttpClient(); string? StorageConnectionString = builder.Configuration.GetValue("Azure:Storage:ConnectionString"); string? RedisConnectionString = builder.Configuration.GetValue("Azure:Redis:ConnectionString"); //Storage builder.Services.AddAzureStorage(StorageConnectionString, "Default"); //Redis builder.Services.AddAzureRedis(RedisConnectionString, "Default"); builder.Services.AddSignalR(); builder.Services.AddHttpContextAccessor(); builder.Services.AddHttpClient(); string path = $"{builder.Environment.ContentRootPath}/JsonFiles"; builder.Services.TryAddSingleton(new Region2LongitudeLatitudeTranslator(path)); builder.Services.AddIPSearcher(path); builder.Services.AddSingleton(); builder.Services.AddCors(options => { options.AddDefaultPolicy( builder => { builder.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); }); }); builder.Services.AddControllersWithViews(); builder.Services.AddSingleton(); builder.Services.AddHostedService(); builder.Services.AddAzureSignalR(builder.Configuration.GetValue("Azure:SignalR:ConnectionString")); ////MQTT 服务端API 发送消息到MQTT客户端 https://www.cnblogs.com/weskynet/p/16441219.html //#region MQTT配置 //builder.Services.AddSingleton(); //builder.Services.AddSingleton(new JsonSerializerOptions(JsonSerializerDefaults.Web)); //builder.Services.AddHostedMqttServerWithServices(x => //{ // x.WithDefaultEndpoint() // .WithConnectionBacklog(1000) // .WithPersistentSessions(true).WithKeepAlive() // .WithDefaultCommunicationTimeout(TimeSpan.FromMilliseconds(30)); //}).AddMqttConnectionHandler().AddConnections().AddMqttControllers(); //#endregion var app = builder.Build(); // Configure the HTTP request pipeline. app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } } }