using Database.Database; //using CMS.Portal.Business.Questions; using CMS.Business.Portal; using CMS.Business.User; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; using System.Globalization; using System.Reflection; using System.Text; using System.Xml; var builder = WebApplication.CreateBuilder(args); // Log4net XmlDocument log4netConfig = new(); log4netConfig.Load(File.OpenRead("log4net.config")); var repo = log4net.LogManager.CreateRepository( Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy)); log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // DbContext var connection = builder.Configuration.GetValue("Connection"); builder.Services.AddDbContext(options => options.UseOracle(connection, providerOptions => providerOptions.CommandTimeout(60) .UseRelationalNulls(true) .MinBatchSize(2) .UseOracleSQLCompatibility("11"))); // Business services //builder.Services.AddScoped(); builder.Services.AddScoped(); // JWT builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(o => { o.TokenValidationParameters = new TokenValidationParameters { ValidIssuer = builder.Configuration["Jwt:Issuer"], ValidAudience = builder.Configuration["Jwt:Audience"], IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)), ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, // nên bật ValidateIssuerSigningKey = true }; }); builder.Services.AddAuthorization(); // Localization builder.Services.Configure(options => { var cultures = new List { new("my"), new("en") }; options.DefaultRequestCulture = new("my"); options.SupportedCultures = cultures; options.SupportedUICultures = cultures; }); var app = builder.Build(); // Swagger (chỉ bật khi dev) if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseRequestLocalization(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();