Поделиться через


Размещение и развертывание ASP.NET Core Blazor WebAssembly с помощью IIS

Замечание

Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.

Предупреждение

Эта версия ASP.NET Core больше не поддерживается. Для получения дополнительной информации см. Политику поддержки .NET и .NET Core. В текущей версии см. версию .NET 10 этой статьи.

В этой статье объясняется, как размещать и развертывать Blazor WebAssembly, используя Интернет-службы информации (IIS).

IIS — это статический файловый сервер для Blazor приложений. Для настройки IIS для размещения Blazor см. статью Создание статического веб-сайта в IIS.

Опубликованные ресурсы создаются в /bin/Release/{TARGET FRAMEWORK}/publish или bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish папке, где {TARGET FRAMEWORK} плейсхолдер является целевой платформой. Размещение содержимого publish папки на веб-сервере или службе размещения.

Файл web.config

Blazor При публикации web.config проекта создается файл со следующей конфигурацией IIS:

  • Типы MIME
  • Сжатие HTTP включено для следующих типов MIME:
    • application/octet-stream
    • application/wasm
  • Устанавливаются правила переопределения URL-адресов:
    • Настройте подкаталог, в котором находятся статические ресурсы приложения (wwwroot/{PATH REQUESTED}).
    • Создайте резервную маршрутизацию SPA, чтобы запросы нефайловых ресурсов перенаправлялись в документ по умолчанию приложения в папке статических ресурсов (wwwroot/index.html).

Использование пользовательского web.config

Чтобы использовать пользовательский web.config файл, следуйте этим шагам.

  1. Поместите пользовательский web.config файл в корневую папку проекта.
  2. Опубликуйте проект. Дополнительные сведения см. в статье Размещение и развертывание ASP.NET Core Blazor.
  1. Поместите пользовательский web.config файл в корневую папку проекта. Для размещенного Blazor WebAssemblyрешения поместите файл в папку Server проекта.
  2. Опубликуйте проект. Для размещенного Blazor WebAssembly решения опубликуйте решение из Server проекта. Дополнительные сведения см. в статье Размещение и развертывание ASP.NET Core Blazor.

Если при создании или преобразовании пакета SDK web.config во время публикации файл не перемещается в опубликованные ресурсы в папке publish, или изменяется настраиваемая конфигурация в пользовательском файле web.config, используйте, при необходимости, любой из следующих подходов, чтобы полностью контролировать процесс:

  • Если пакет SDK не создает файл, например, в автономном приложении в Blazor WebAssembly или /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot, где заполнитель bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish является целевой платформой, задайте свойству {TARGET FRAMEWORK} значение <PublishIISAssets> в файле проекта true. Обычно для автономных приложений WebAssembly это единственный обязательный параметр для перемещения пользовательского web.config файла и предотвращения преобразования файла пакетом SDK.

    <PropertyGroup>
      <PublishIISAssets>true</PublishIISAssets>
    </PropertyGroup>
    
  • Отключите преобразование пакета SDK web.config в файле проекта (.csproj):

    <PropertyGroup>
      <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    </PropertyGroup>
    
  • Добавьте пользовательский целевой объект в файл проекта (.csproj) для перемещения пользовательского web.config файла. В следующем примере пользовательский web.config файл помещается разработчиком в корне проекта. web.config Если файл находится в другом месте, укажите путь к файлу.SourceFiles В следующем примере указывается папка publish с $(PublishDir), но необходимо указать путь к DestinationFolder для пользовательского расположения выхода.

    <Target Name="CopyWebConfig" AfterTargets="Publish">
      <Copy SourceFiles="web.config" DestinationFolder="$(PublishDir)" />
    </Target>
    

Установка модуля переопределения URL-адресов

Модуль перезаписи URL-адресов требуется для перезаписи URL-адресов. Модуль по умолчанию не установлен, и он недоступен для установки в качестве компонента службы ролей веб-сервера (IIS). Модуль должен быть скачан с веб-сайта IIS. Установите модуль с помощью установщика веб-платформы:

  1. Локально перейдите на страницу загрузки модуля переопределения URL-адресов. Для английской версии выберите WebPI, чтобы скачать установщик WebPI . Для других языков выберите соответствующую архитектуру для сервера (x86/x64), чтобы скачать установщик.
  2. Скопируйте установщик на сервер. Запустите установщик. Нажмите кнопку "Установить" и примите условия лицензии. После завершения установки перезагрузка сервера не требуется.

Настройка веб-сайта

Задайте физический путь веб-сайта к папке приложения. Папка содержит следующее:

  • Файл web.config , который IIS использует для настройки веб-сайта, включая необходимые правила перенаправления и типы контента файлов.
  • Папка статичных ресурсов приложения.

Размещенный в качестве подприложения IIS

Если автономное приложение размещается как под-приложение IIS, выполните одно из следующих действий:

  • Отключите обработчик наследуемого модуля ASP.NET Core.

    Удалите обработчик в Blazor опубликованном web.config файле приложения, добавив <handlers> раздел в <system.webServer> раздел файла:

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • Отключите наследование корневого раздела (родительского) приложения <system.webServer> с помощью элемента <location>, у которого inheritInChildApplications задано значение false:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" ... />
          </handlers>
          <aspNetCore ... />
        </system.webServer>
      </location>
    </configuration>
    

    Замечание

    Отключение наследования раздела корневого (родительского) приложения <system.webServer> — это конфигурация по умолчанию для опубликованных приложений с помощью пакета SDK для .NET.

Удаление обработчика или отключение наследования выполняется в дополнение к настройке базового пути приложения. Установите базовый путь приложения в файле index.html на псевдоним IIS, используемый при конфигурации дочернего приложения в IIS.

Настройте базовый путь приложения, следуя инструкциям в ASP.NET Core базовом пути приложенияBlazor.

Сжатие Brotli и Gzip

Этот раздел относится только к автономным приложениям Blazor WebAssembly .

Этот раздел относится только к автономным приложениям Blazor WebAssembly . Размещенные Blazor приложения используют файл по умолчанию ASP.NET Core web.config, а не файл, указанный в этом разделе.

Систему IIS можно настроить через web.config для предоставления сжатых активов Brotli или Gzip для автономных Blazor приложений. Пример файла конфигурации см. в разделе web.config.

Дополнительная настройка примера web.config файла может потребоваться в следующих сценариях:

  • Спецификация приложения вызывает любой из следующих вариантов:
    • Предоставление сжатых файлов, которые не настроены с помощью примера web.config файла.
    • Обслуживание сжатых файлов, настроенных примером web.config файла в несжатом формате.
  • Конфигурация IIS сервера (например, applicationHost.config) предоставляет параметры IIS по умолчанию для уровня сервера. В зависимости от конфигурации уровня сервера приложению может потребоваться другая конфигурация IIS, отличная от того, что содержит пример web.config файла.

Дополнительные сведения о пользовательских web.config файлах см. в разделе "Использование пользовательского web.config раздела".

Устранение неполадок

Если получено значение 500 — внутренняя ошибка сервера , а диспетчер IIS выдает ошибки при попытке получить доступ к конфигурации веб-сайта, убедитесь, что установлен модуль перезаписи URL-адресов. Если модуль не установлен, web.config файл не может быть проанализирован службами IIS. Это препятствует загрузке конфигурации веб-сайта диспетчером IIS и мешает веб-сайту обслуживать статические файлы Blazor.

Дополнительные сведения об устранении неполадок развертываний в IIS см. в статье "Устранение неполадок ASP.NET Core в службе приложений Azure и СЛУЖБАХ IIS".