| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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<string>("Connection");
- builder.Services.AddDbContext<ModelContext>(options =>
- options.UseOracle(connection, providerOptions =>
- providerOptions.CommandTimeout(60)
- .UseRelationalNulls(true)
- .MinBatchSize(2)
- .UseOracleSQLCompatibility("11")));
- // Business services
- //builder.Services.AddScoped<IQuestionBusiness, QuestionBusinessImpl>();
- builder.Services.AddScoped<IUserBusiness, UserBusinessImpl>();
- // 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<RequestLocalizationOptions>(options =>
- {
- var cultures = new List<CultureInfo> { 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();
|