Язык программирования C#9 и платформа .NET5
Шрифт:
}
}
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)
{
// Если среда разработки, тогда отображать отладочную информацию.
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;"
}
}
Стандартный
UseEndpoints
маршрутизацию на основе соглашений. Ее понадобится отключить и повсюду в приложении применять маршрутизацию с помощью атрибутов. Закомментируйте (или удалите) вызов MapControllerRoute
и замените его вызовом MapControllers
:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers;
});
Далее добавьте атрибуты маршрутов к
HomeController
в приложении AutoLot.Mvc
. Первым делом добавьте шаблон контроллер/действие к самому контроллеру:
[Route("[controller]/[action]")]
public class HomeController : Controller
{
...
}
Затем добавьте три маршрута к методу
Index
, так что он будет стандартным действием, когда не указано действие либо когда не указан контроллер или действие. Кроме того, снабдите метод атрибутом HttpGet
, чтобы явно объявить его действием GET
:
[Route("/")]
[Route("/[controller]")]
[Route("/[controller]/[action]")]
[HttpGet]
public IActionResult Index
{
return View;
}
Ведение журнала
Базовая инфраструктура ведения журнала добавляется в контейнер DI как часть процесса запуска и конфигурирования. Инфраструктура ведения журнала использует довольно простой интерфейс
ILogger<T>
. Основополагающим компонентом ведения журнала является класс LoggerExtensions
, определения методов которого показаны ниже:
public static class LoggerExtensions
{
public static void LogDebug(this ILogger logger, EventId eventId,
Exception exception, string message, params object[] args)
public static void LogDebug(this ILogger logger, EventId eventId,
string message, params
object[] args)
public static void LogDebug(this ILogger logger, Exception exception,
Поделиться:
Популярные книги
В зоне особого внимания
12. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сильнейший ученик. Том 2
2. Пробуждение крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Нищенка в элитной академии
4. Академия юных сердец
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Назад в СССР 5
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Столичный доктор. Том III
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Секретарша генерального
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
8.46
рейтинг книги
Мастер Разума III
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Идеальный мир для Социопата 3
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Ученик
1. Ученик
Фантастика:
фэнтези
6.20
рейтинг книги
Попытка возврата. Тетралогия
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Ищу жену для своего мужа
Любовные романы:
любовно-фантастические романы
6.17
рейтинг книги
Сила рода. Том 3
2. Претендент
Фантастика:
фэнтези
боевая фантастика
6.17
рейтинг книги
Крестоносец
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
На границе империй. Том 10. Часть 4
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00