Перейти к содержанию

Подготовка и публикация приложения в IIS

Для приложения ASP.NET Core IIS будет действовать как обратный прокси-сервер. IIS будет пересылать входящие запросы и исходящие ответы приложения.
Для этого требуется некоторая настройка приложения.
Интеграция с IIS добавляется по умолчании при использовании метода IHostBuilder.ConfigureWebHostDefaults(), используемого в шаблонах по умолчанию.
Если настраивается собственный HostBuilder, нужно добавить интеграцию методами UseIIS() или UseIISIntegration():

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHost(webBuilder =>
            {
                webBuilder.UseKestrel();
                webBuilder.UseStartup<Startup>();
                webBuilder.UseIIS(); //внутрипроцессорная модель хостинга
                webBuilder.UseIISIntegration(); //внепроцессорная модель хостинга
            });
}

При запуске приложения эти методы настраивают приложение для сопряжения с IIS. Помимо прочего, они:

  • определяют URL-адрес, который будет использовать IIS для пересылки запросов и настраивают его на прослушивание этого адреса;
  • настраивают приложение для интерпретации запросов от IIS, как идущих от клиента, настроив пересылку заголовков;
  • активируют аутентификацию Windows, если потребуется.
Внутрипроцессный и внепроцессный хостинг в IIS

Внепроцессный хостинг предполагает, что обратный прокси и приложение выполняются в разных процессах. Однако, начиная с ASP.NET Core 3.0 появилась возможность, при которой IIS размещает приложение в собственном процессе, уменьшая межпроцессное взаимодействие и повышая производительность. О различиях между этими моделями, преимуществах каждой и о том, как переключаться между ними можно посмотреть здесь

Еще один важнгый аспект. IIS, как и раньше, использует файл web.config для настройки приложений. Важно, чтобы приложение содержало этот файл при публикации в IIS.
Если приложение содержит wrb.config, он будет скопирован при публикации. Если нет, он будет создан при публикации.

Далее нужно опубликовать приложение при помощи команды

dotnet publish --output publish_folder --configuration Release

и скопировать его из папки publish_folder в папку, указанную при настройке IIS.


Последнее обновление : 14 октября 2022 г.
Дата создания : 14 октября 2022 г.

Комментарии

Комментарии