using EVCB_OCPP.DBAPI; using EVCB_OCPP.DBAPI.Jobs; using EVCB_OCPP.DBAPI.Services; using EVCB_OCPP.DBAPI.Services.DbService; using EVCB_OCPP.DBAPI.Services.ServerMessageServices; using EVCB_OCPP.Domain.Extensions; using Microsoft.Extensions.Hosting; using NLog.Extensions.Logging; using NLog.Web; using SQLitePCL; using StackExchange.Redis; using System.Net.Security; using System.Security.Cryptography.X509Certificates; //raw.SetProvider(new SQLite3Provider_e_sqlite3()); //RedisConfig.CertificateValidationCallback = ( // object sender, // X509Certificate? certificate, // X509Chain? chain, // SslPolicyErrors sslPolicyErrors) // => { return true; }; var builder = Host.CreateDefaultBuilder(args) .ConfigureLogging((context, loggingBuilder) => { loggingBuilder.ClearProviders(); NLog.LogManager.Configuration = new NLogLoggingConfiguration(context.Configuration.GetSection("NLog")); }) .UseNLog() .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); webBuilder.ConfigureKestrel(serverOptions => { serverOptions.Limits.MaxRequestBodySize = null; }); }) .ConfigureServices((context, services) => { var azureRedisHost = context.Configuration["AZURE_REDIS_HOST"]; var azureRedisPwd = context.Configuration["AZURE_REDIS_PASSWORD"]; var azureRedisPort = context.Configuration["AZURE_REDIS_PORT"]; var azureRedisIsSSL = context.Configuration["AZURE_REDIS_SSL"]; var azureRedisDb = context.Configuration["AZURE_REDIS_DATABASE"]; //var connString = $"redis://{azureRedisHost}:{azureRedisPort}?ssl={azureRedisIsSSL}&sslprotocols=Tls12&password={azureRedisPwd.UrlEncode()}&defaultDatabase={azureRedisDb}"; //var connString = $"{azureRedisHost}:{azureRedisPort}?ssl=true&password={azureRedisPwd}&db={azureRedisDb}"; //var connString = $"wSy0KUhPB7GAH1k28X6JzZ4102Ia679PFAzCaBbPc2I=@devtest-backend-redis.redis.cache.windows.net:6380"; //services.AddSingleton(new PooledRedisClientManager(connString)); azureRedisHost = "devtest-backend-redis.redis.cache.windows.net"; azureRedisPwd = "SV213drVDPL7Vay7wBEXthU2expkuf2LlAzCaB64PQg="; azureRedisPort = "6380"; azureRedisIsSSL = "true"; azureRedisDb = "0"; var connConfig = new ConfigurationOptions() { EndPoints = { { azureRedisHost , int.Parse(azureRedisPort) } }, Password = azureRedisPwd, Ssl = true, DefaultDatabase = int.Parse(azureRedisDb) }; connConfig.CertificateValidation += (object sender, X509Certificate? certificate, X509Chain? chain, SslPolicyErrors sslPolicyErrors) => { return true; }; services.AddSingleton((service) => { var conn = ConnectionMultiplexer.Connect(connConfig); return conn.GetDatabase(); }); services.AddSingleton((service) => { var conn = ConnectionMultiplexer.Connect(connConfig); return conn.GetServer(connConfig.EndPoints.First()); }); services.AddJobs(); services.AddMainDbContext(context.Configuration); services.AddTransient(); services.AddTransient(); //services.AddTransient(); services.AddMemDbService(); }); var app = builder.Build(); await app.RunAsync();