Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 586 587 588 589 590 591 592 593 594 ... 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

Метод 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. Вот модифицированный код:

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

public void Configure(

  IApplicationBuilder app,

  IWebHostEnvironment env,

<b>  ApplicationDbContext context)</b>

{

  if (env.IsDevelopment())

  {

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

    app.UseDeveloperExceptionPage();

<b>    // Инициализировать базу данных.</b>

<b>   if (Configuration.GetValue&lt;bool&gt;(&quot;RebuildDataBase&quot;))</b>

<b>    {</b>

<b>      SampleDataInitializer.InitializeData(context);</b>

<b>    }</b>

  }

  ...

}

Обновите файл appsettings.development.json с учетом свойства RebuildDataBase (пока что установив его в false):

{

  &quot;Logging&quot;: {

    &quot;LogLevel&quot;: {

      &quot;Default&quot;: &quot;Information&quot;,

      &quot;Microsoft&quot;: &quot;Warning&quot;,

      &quot;Microsoft.Hosting.Lifetime&quot;: &quot;Information&quot;

    }

  },

  &quot;RebuildDataBase&quot;: false,

  &quot;ConnectionStrings&quot;: {

    &quot;AutoLot&quot;: &quot;Server=db;Database=AutoLotPresentation;

    User ID=sa;Password=P@ssw0rd;&quot;

  }

}

Стандартный шаблон настраивает в методе UseEndpoints() маршрутизацию на основе соглашений. Ее понадобится отключить и повсюду в приложении применять маршрутизацию с помощью атрибутов. Закомментируйте (или удалите) вызов MapControllerRoute() и замените его вызовом MapControllers():

app.UseEndpoints(endpoints =&gt;

{

  endpoints.MapControllers();

});

Далее добавьте атрибуты маршрутов к HomeController в приложении AutoLot.Mvc. Первым делом добавьте шаблон контроллер/действие к самому контроллеру:

1 ... 586 587 588 589 590 591 592 593 594 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий