Чтение онлайн

ЖАНРЫ

Язык программирования 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)

{

// Если среда разработки, тогда отображать отладочную информацию.

Поделиться с друзьями: