NetCoreTemplate/APP_WEB/Program.cs
Dvurechensky c99c7eaa9f 1.0.0
Full All
2025-03-02 08:59:35 +03:00

101 lines
2.6 KiB
C#

using System.Reflection;
using System.Text.Json;
using APP_LOGGING.Accessories.LoggingAccessories;
using APP_UTILITIES.Middleware;
using Microsoft.AspNetCore.Mvc;
using Microsoft.OpenApi.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile($"{LoggingExtensions.AppDir}/app_configuration.json");
builder.WebHost.UseUrls($"https://{builder.Configuration["appSettings:appHost"]}");
builder.Services.AddControllersWithViews();
#region  ýòîì ðåãèîíå îáúÿâëÿåì ñåðâèñû
// Íàïðèìåð
// builder.Services.AddSingleton<ICashService, CashService>();
#endregion
builder.Services.Configure<JsonOptions>(options =>
{
options.JsonSerializerOptions.WriteIndented = true; //äëÿ êðàñèâîãî ôîðìàòèðîâàíèÿ
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
//íàñòðîéêè ñëóæáû ïðîòèâ ïîääåëêè çàïðîñîâ
builder.Services.AddAntiforgery(options =>
{
options.HeaderName = "X-CSRF-TOKEN";
});
builder.Services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new OpenApiInfo
{
Title = "App API",
Version = "1.0.0",
Description = "Èíôîðìàöèÿ îá API",
Contact = new OpenApiContact
{
Name = "Dvurechensky"
}
});
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
options.IncludeXmlComments(xmlPath);
});
var app = builder.Build();
var appLifetime = app.Services.GetRequiredService<IHostApplicationLifetime>();
appLifetime.ApplicationStarted.Register(async () =>
{ //èíèöèàëèçèðóåì ñåðâèñ ëîãèðîâàíèÿ
LoggingExtensions.Logging.InitializeLogging("API Reagent Project Control");
});
appLifetime.ApplicationStopping.Register(() =>
{
LoggingExtensions.Logging.DeinitializeLogging(); //âûêëþ÷àåì ñåðâèñ ëîãèðîâàíèÿ
});
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
else
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Äîêóìåíòàöèÿ");
c.RoutePrefix = "docs";
});
app.UseDeveloperExceptionPage(); //èñïîëüçóåì ñòðàíèöó èñêëþ÷åíèé
}
app.UseCookiePolicy(); //èñïîëüçîâàòü ïîëèòèêó êóêè
// app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseMiddleware<AntiforgeryMiddleware>(); //îáðàáîò÷èê ñëóæáû ïðîòèâ ïîääåëêè çàïðîñîâ
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();