NetCoreTemplate/APP_WEB/Program.cs
Dvurechensky 55775cc590 1.0.4
2025-05-12 06:06:47 +03:00

109 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 06:05:33
* Version: 1.0.5
*/
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();