1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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<string>("Azure:Storage:ConnectionString");
- string? RedisConnectionString = builder.Configuration.GetValue<string>("Azure:Redis:ConnectionString");
- //Storage
- builder.Services.AddAzureStorage(StorageConnectionString, "Default");
- //Redis
- builder.Services.AddAzureRedis(RedisConnectionString, "Default");
- builder.Services.AddSignalR();
- builder.Services.AddHttpContextAccessor();
- builder.Services.AddHttpClient<DingDing>();
- string path = $"{builder.Environment.ContentRootPath}/JsonFiles";
- builder.Services.TryAddSingleton(new Region2LongitudeLatitudeTranslator(path));
- builder.Services.AddIPSearcher(path);
- builder.Services.AddSingleton<CoreDevice>();
- builder.Services.AddCors(options =>
- {
- options.AddDefaultPolicy(
- builder =>
- {
- builder.AllowAnyOrigin()
- .AllowAnyHeader()
- .AllowAnyMethod();
- });
- });
- builder.Services.AddControllersWithViews();
- builder.Services.AddSingleton<BackgroundWorkerQueue>();
- builder.Services.AddHostedService<SignalRIESHybridClientHub>();
- builder.Services.AddAzureSignalR(builder.Configuration.GetValue<string>("Azure:SignalR:ConnectionString"));
- ////MQTT 服务端API 发送消息到MQTT客户端 https://www.cnblogs.com/weskynet/p/16441219.html
- //#region MQTT配置
- //builder.Services.AddSingleton<MQTTEvents>();
- //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();
- }
- }
- }
|