Program.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using EVCB_OCPP.DBAPI;
  2. using EVCB_OCPP.DBAPI.Jobs;
  3. using EVCB_OCPP.DBAPI.Services;
  4. using EVCB_OCPP.DBAPI.Services.DbService;
  5. using EVCB_OCPP.DBAPI.Services.ServerMessageServices;
  6. using EVCB_OCPP.Domain.Extensions;
  7. using Microsoft.Extensions.Hosting;
  8. using NLog.Extensions.Logging;
  9. using NLog.Web;
  10. using SQLitePCL;
  11. using StackExchange.Redis;
  12. using System.Net.Security;
  13. using System.Security.Cryptography.X509Certificates;
  14. //raw.SetProvider(new SQLite3Provider_e_sqlite3());
  15. //RedisConfig.CertificateValidationCallback = (
  16. // object sender,
  17. // X509Certificate? certificate,
  18. // X509Chain? chain,
  19. // SslPolicyErrors sslPolicyErrors)
  20. // => { return true; };
  21. var builder = Host.CreateDefaultBuilder(args)
  22. .ConfigureLogging((context, loggingBuilder) => {
  23. loggingBuilder.ClearProviders();
  24. NLog.LogManager.Configuration = new NLogLoggingConfiguration(context.Configuration.GetSection("NLog"));
  25. })
  26. .UseNLog()
  27. .ConfigureWebHostDefaults(webBuilder =>
  28. {
  29. webBuilder.UseStartup<Startup>();
  30. webBuilder.ConfigureKestrel(serverOptions =>
  31. {
  32. serverOptions.Limits.MaxRequestBodySize = null;
  33. });
  34. })
  35. .ConfigureServices((context, services) => {
  36. var azureRedisHost = context.Configuration["AZURE_REDIS_HOST"];
  37. var azureRedisPwd = context.Configuration["AZURE_REDIS_PASSWORD"];
  38. var azureRedisPort = context.Configuration["AZURE_REDIS_PORT"];
  39. var azureRedisIsSSL = context.Configuration["AZURE_REDIS_SSL"];
  40. var azureRedisDb = context.Configuration["AZURE_REDIS_DATABASE"];
  41. //var connString = $"redis://{azureRedisHost}:{azureRedisPort}?ssl={azureRedisIsSSL}&sslprotocols=Tls12&password={azureRedisPwd.UrlEncode()}&defaultDatabase={azureRedisDb}";
  42. //var connString = $"{azureRedisHost}:{azureRedisPort}?ssl=true&password={azureRedisPwd}&db={azureRedisDb}";
  43. //var connString = $"wSy0KUhPB7GAH1k28X6JzZ4102Ia679PFAzCaBbPc2I=@devtest-backend-redis.redis.cache.windows.net:6380";
  44. //services.AddSingleton<IRedisClientsManager>(new PooledRedisClientManager(connString));
  45. azureRedisHost = "devtest-backend-redis.redis.cache.windows.net";
  46. azureRedisPwd = "SV213drVDPL7Vay7wBEXthU2expkuf2LlAzCaB64PQg=";
  47. azureRedisPort = "6380";
  48. azureRedisIsSSL = "true";
  49. azureRedisDb = "0";
  50. var connConfig = new ConfigurationOptions()
  51. {
  52. EndPoints = { { azureRedisHost , int.Parse(azureRedisPort) } },
  53. Password = azureRedisPwd,
  54. Ssl = true,
  55. DefaultDatabase = int.Parse(azureRedisDb)
  56. };
  57. connConfig.CertificateValidation += (object sender, X509Certificate? certificate, X509Chain? chain, SslPolicyErrors sslPolicyErrors) => { return true; };
  58. services.AddSingleton<IDatabase>((service) => {
  59. var conn = ConnectionMultiplexer.Connect(connConfig);
  60. return conn.GetDatabase();
  61. });
  62. services.AddSingleton<IServer>((service) => {
  63. var conn = ConnectionMultiplexer.Connect(connConfig);
  64. return conn.GetServer(connConfig.EndPoints.First());
  65. });
  66. services.AddJobs();
  67. services.AddMainDbContext(context.Configuration);
  68. services.AddTransient<IMainDbService, MainDbService>();
  69. services.AddTransient<IServerMessageService, MemDbServerMessageService>();
  70. //services.AddTransient<IServerMessageService, RedisServerMessageService>();
  71. services.AddMemDbService();
  72. });
  73. var app = builder.Build();
  74. await app.RunAsync();