Язык программирования C#9 и платформа .NET5
Часть 590 из 642 Информация о книге
"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"RebuildDataBase": false,"ConnectionStrings": {"AutoLot": "Server=db;Database=AutoLotPresentation;User ID=sa;Password=P@ssw0rd;"}}AutoLot.Mvc
Метод
для веб-приложений немного сложнее, чем его аналог для API. Ниже приведен полный код метода с последующим обсуждением:Configure()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()и поддержка протокола строгой транспортной безопасности HTTP (HTTP Strict Transport Security — HSTS). Как и в аналоге для API, добавляется вызовUseExceptionHandler(). Следующим шагом является добавление поддержки статических файлов с помощью вызоваapp.UseHttpsRedirection(). Поддержка статических файлов включается как мера по усилению безопасности. Если ваше приложение в ней не нуждается (подобно API-интерфейсам), тогда не добавляйте такую поддержку. Затем добавляется промежуточное ПО для маршрутизации, авторизации и конечных точек.app.UseStaticFiles()Добавьте в метод параметр типа
и вызовитеАрplicationDbContextизInitializeData(). Вот модифицированный код:AutoLot.Dalpublic void Configure(IApplicationBuilder app,IWebHostEnvironment env,<b> ApplicationDbContext context)</b>{if (env.IsDevelopment()){// Если среда разработки, тогда отображать отладочную информацию.app.UseDeveloperExceptionPage();<b> // Инициализировать базу данных.</b><b> if (Configuration.GetValue<bool>("RebuildDataBase"))</b><b> {</b><b> SampleDataInitializer.InitializeData(context);</b><b> }</b>}...}Обновите файл
с учетом свойства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