Язык программирования C#9 и платформа .NET5
Шрифт:
AutoLot.Api
Внутри стандартного шаблона выполняется проверка среды, и если она установлена в
Development
(среда разработки), тогда в конвейер обработки добавляется промежуточное ПО UseDeveloperExceptionPage
, предоставляющее отладочную информацию, которую вы вряд ли захотите отображать в производственной среде. Далее производится вызов UseHttpsRedirection
для перенаправления всего трафика на HTTPS (вместо HTTP). Затем добавляются вызовы арр.UseRouting
, арр.UseAuthorization
и арр.UseEndpoints
. Вот полный код метода:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment)
{
//
Если среда разработки, тогда отображать отладочную информацию.
app.UseDeveloperExceptionPage;
// Первоначальный код.
app.UseSwagger;
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json",
"AutoLot.Api v1"));
}
// Перенаправить трафик HTTP на HTTPS.
app.UseHttpsRedirection;
// Включить маршрутизацию.
app.UseRouting;
// Включить проверки авторизации.
app.UseAuthorization;
// Включить маршрутизацию с использованием конечных точек.
// Использовать для контроллеров маршрутизацию с помощью атрибутов.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers;
});
}
Кроме того, когда приложение запускается в среде разработки, необходимо инициализировать базу данных. Добавьте в метод
Configure
параметр типа ApplicationDbContext
и вызовите метод InitializeData
из AutoLot.Dal
. Ниже показан модифицированный код:
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
ApplicationDbContext context)
{
if (env.IsDevelopment)
{
// Если среда разработки, тогда отображать отладочную информацию.
app.UseDeveloperExceptionPage;
// Инициализировать базу данных.
if (Configuration.GetValue<bool>("RebuildDataBase"))
{
SampleDataInitializer.InitializeData(context);
}
}
...
}
Обновите файл
appsettings.development.json
с учетом свойства RebuildDataBase
(пока что установив его в false
):
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"RebuildDataBase": false,
"ConnectionStrings": {
"AutoLot": "Server=db;Database=AutoLotPresentation;
User ID=sa;Password=P@ssw0rd;"
}
}
AutoLot.Mvc
Метод
Configure
для веб-приложений немного сложнее, чем его аналог для API. Ниже приведен полный код метода с последующим обсуждением:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment)
{
app.UseDeveloperExceptionPage;
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts;
}
app.UseHttpsRedirection;
app.UseStaticFiles;
app.UseRouting;
app.UseAuthorization;
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
Метод
Configure
также проверяет среду, и если она установлена в Development
(среда разработки), тогда в конвейер обработки добавляется промежуточное ПО UseDeveloperExceptionPage
. Для любой другой среды в конвейер обработки добавляется универсальное промежуточное ПО UseExceptionHandler
и поддержка протокола строгой транспортной безопасности HTTP (HTTP Strict Transport Security — HSTS). Как и в аналоге для API, добавляется вызов app.UseHttpsRedirection
. Следующим шагом является добавление поддержки статических файлов с помощью вызова app.UseStaticFiles
. Поддержка статических файлов включается как мера по усилению безопасности. Если ваше приложение в ней не нуждается (подобно API-интерфейсам), тогда не добавляйте такую поддержку. Затем добавляется промежуточное ПО для маршрутизации, авторизации и конечных точек. Добавьте в метод параметр типа
АрplicationDbContext
и вызовите InitializeData
из AutoLot.Dal
. Вот модифицированный код:
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
ApplicationDbContext context)
{
if (env.IsDevelopment)
{
// Если среда разработки, тогда отображать отладочную информацию.
Поделиться с друзьями: