2025-05-12 06:06:47 +03:00
|
|
|
|
/*
|
|
|
|
|
* Author: Nikolay Dvurechensky
|
|
|
|
|
* Site: https://www.dvurechensky.pro/
|
|
|
|
|
* Gmail: dvurechenskysoft@gmail.com
|
|
|
|
|
* Last Updated: 12 мая 2025 06:05:33
|
|
|
|
|
* Version: 1.0.5
|
|
|
|
|
*/
|
|
|
|
|
|
2025-03-02 08:59:35 +03:00
|
|
|
|
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();
|
|
|
|
|
|
2025-05-12 06:06:47 +03:00
|
|
|
|
#region В этом регионе объявляем сервисы
|
2025-03-02 08:59:35 +03:00
|
|
|
|
|
2025-05-12 06:06:47 +03:00
|
|
|
|
// Например
|
2025-03-02 08:59:35 +03:00
|
|
|
|
// builder.Services.AddSingleton<ICashService, CashService>();
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
builder.Services.Configure<JsonOptions>(options =>
|
|
|
|
|
{
|
2025-05-12 06:06:47 +03:00
|
|
|
|
options.JsonSerializerOptions.WriteIndented = true; //для красивого форматирования
|
2025-03-02 08:59:35 +03:00
|
|
|
|
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
|
|
|
|
|
});
|
|
|
|
|
|
2025-05-12 06:06:47 +03:00
|
|
|
|
//настройки службы против подделки запросов
|
2025-03-02 08:59:35 +03:00
|
|
|
|
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",
|
2025-05-12 06:06:47 +03:00
|
|
|
|
Description = "Информация об API",
|
2025-03-02 08:59:35 +03:00
|
|
|
|
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 () =>
|
2025-05-12 06:06:47 +03:00
|
|
|
|
{ //инициализируем сервис логирования
|
2025-03-02 08:59:35 +03:00
|
|
|
|
LoggingExtensions.Logging.InitializeLogging("API Reagent Project Control");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
appLifetime.ApplicationStopping.Register(() =>
|
|
|
|
|
{
|
2025-05-12 06:06:47 +03:00
|
|
|
|
LoggingExtensions.Logging.DeinitializeLogging(); //выключаем сервис логирования
|
2025-03-02 08:59:35 +03:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!app.Environment.IsDevelopment())
|
|
|
|
|
{
|
|
|
|
|
app.UseExceptionHandler("/Home/Error");
|
|
|
|
|
app.UseHsts();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
app.UseSwagger();
|
|
|
|
|
app.UseSwaggerUI(c =>
|
|
|
|
|
{
|
2025-05-12 06:06:47 +03:00
|
|
|
|
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Документация");
|
2025-03-02 08:59:35 +03:00
|
|
|
|
c.RoutePrefix = "docs";
|
|
|
|
|
});
|
2025-05-12 06:06:47 +03:00
|
|
|
|
app.UseDeveloperExceptionPage(); //используем страницу исключений
|
2025-03-02 08:59:35 +03:00
|
|
|
|
}
|
|
|
|
|
|
2025-05-12 06:06:47 +03:00
|
|
|
|
app.UseCookiePolicy(); //использовать политику куки
|
2025-03-02 08:59:35 +03:00
|
|
|
|
|
|
|
|
|
// app.UseHttpsRedirection();
|
|
|
|
|
|
|
|
|
|
app.UseStaticFiles();
|
|
|
|
|
app.UseRouting();
|
|
|
|
|
|
2025-05-12 06:06:47 +03:00
|
|
|
|
app.UseMiddleware<AntiforgeryMiddleware>(); //обработчик службы против подделки запросов
|
2025-03-02 08:59:35 +03:00
|
|
|
|
app.UseAuthorization();
|
|
|
|
|
|
|
|
|
|
app.MapControllerRoute(
|
|
|
|
|
name: "default",
|
|
|
|
|
pattern: "{controller=Home}/{action=Index}/{id?}");
|
|
|
|
|
|
|
|
|
|
app.Run();
|