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


Размещение и развертывание ASP.NET Core Blazor

Примечание.

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

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

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

Внимание

Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

В текущем выпуске смотрите версию .NET 9 этой статьи.

В этой статье объясняется, как размещать и развертывать Blazor приложения.

Публикация приложения

Приложения публикуются для развертывания в конфигурации 'Release'.

Примечание.

Опубликуйте размещенное Blazor WebAssemblyрешение из проекта Server.

  1. Выберите команду "Опубликовать {APPLICATION}" в меню "Сборка", где {APPLICATION} — заполнитель имени приложения.
  2. Выберите целевой объект публикации. Чтобы опубликовать объект в локальной среде, выберите папку. Нажмите кнопку Далее.
  3. При локальной публикации примите расположение папки по умолчанию или укажите другое расположение. Нажмите кнопку "Готово ", чтобы сохранить профиль. Выберите Закрыть.
  4. Чтобы очистить папку публикации целевого объекта перед публикацией приложения, выберите "Показать все параметры". Выберите Настройки>Параметры публикации файлов>Удалить все существующие файлы перед публикацией. Нажмите кнопку "Сохранить".
  5. Нажмите кнопку Опубликовать.

Публикация приложения активирует восстановление зависимостей проекта и выполняет сборку проекта, прежде чем создавать ресурсы для развертывания. В ходе процесса построения удаляются неиспользуемые методы и сборки, чтобы уменьшить размер скачиваемого приложения и время загрузки.

Очистите целевую папку публикации

При использовании dotnet publish команды в командной оболочке для публикации приложения команда создает необходимые файлы для развертывания на основе текущего состояния проекта и помещает файлы в указанную выходную папку. Команда не очищает целевую папку автоматически перед публикацией приложения.

Чтобы очистить целевую папку автоматически перед публикацией приложения, добавьте следующий целевой объект MSBuild в файл проекта приложения (.csproj) под корневым <Project> элементом:

<Target Name="_RemovePublishDirBeforePublishing" BeforeTargets="BeforePublish">
  <RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)' != ''" />
</Target>

Расположения публикации по умолчанию

  • Blazor Web App: Приложение публикуется в папке /bin/Release/{TARGET FRAMEWORK}/publish, где {TARGET FRAMEWORK} обозначает целевой фреймворк. Разверните содержимое папки publish на узле.
  • Blazor WebAssemblyАвтономный: приложение публикуется в папку bin/Release/{TARGET FRAMEWORK}/publish или bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish. Чтобы развернуть приложение как статический сайт, скопируйте содержимое папки wwwroot на хостинг статического сайта.
  • Blazor Server: приложение публикуется в папке /bin/Release/{TARGET FRAMEWORK}/publish, где шаблон {TARGET FRAMEWORK} используется в качестве целевого фреймворка. Разверните содержимое папки publish на узле.
  • Blazor WebAssembly
    • Автономное: приложение публикуется в папке /bin/Release/{TARGET FRAMEWORK}/publish или папке bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish. Чтобы развернуть приложение как статический сайт, скопируйте содержимое папки wwwroot на хостинг статического сайта.
    • Размещено: серверное приложение ASP.NET Core и клиентское Blazor WebAssembly приложение публикуются в папку /bin/Release/{TARGET FRAMEWORK}/publish серверного приложения, а также любые статические веб-ресурсы клиентского приложения. Разверните содержимое папки publish на узле.

СЛУЖБЫ IIS

Сведения о размещении Blazor приложения в IIS см. в следующих ресурсах:

Совместное использование пула приложений среди приложений ASP.NET Core не поддерживается, включая приложения Blazor. Используйте один пул приложений для каждого приложения при размещении с IIS и избегайте использования виртуальных каталогов IIS для размещения нескольких приложений.

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

Дополнительные сведения о решениях см. в статье Инструментарий для ASP.NET CoreBlazor.

Поддержка пакета JavaScript

Среда Blazor выполнения использует файлы JavaScript (JS), среду выполнения .NET, скомпилированную в код WebAssembly, и управляемые сборки, упакованные как файлы WebAssembly. Blazor Когда Blazor приложение компилируется, среда выполнения зависит от этих файлов из различных мест сборки. Из-за этого ограничения Blazorвыходные данные сборки несовместимы с JS пакетами, такими как Gulp, Webpack и Rollup.

Чтобы создать выходные данные сборки, совместимые с JS пакетами во время публикации, задайте WasmBundlerFriendlyBootConfig для свойства MSBuild значение true в файле проекта приложения:

<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>

Внимание

Эта функция создает только выходные данные, понятные для пакета при публикации приложения.

Выходные данные не выполняются напрямую в браузере, но их можно использовать средствами JS для упаковки JS файлов с остальными предоставленными разработчиками скриптами.

Когда WasmBundlerFriendlyBootConfig включен, созданный JS содержит import директивы для всех ресурсов в приложении, что делает зависимости видимыми для сборщика. Многие из ресурсов не загружаются браузером, но пакеты обычно могут быть настроены для распознавания ресурсов по типу файла для обработки загрузки. Дополнительные сведения о настройке пакета см. в документации по пакету.

Примечание.

Возможность объединения результатов сборки должна достигаться путем сопоставления импортов с индивидуальными расположениями файлов, используя настраиваемый подключаемый модуль сборки JS. На данный момент мы не предлагаем такой подключаемый модуль.

Примечание.

Замена подключаемого модуля files на url, все файлы приложения JS, включая среду выполнения WebAssembly (закодированную в base64 в JS), упаковываются в выходные данные. Размер файла значительно больше (например, на 300%), чем когда файлы обрабатываются с помощью плагина files, поэтому мы не рекомендуем использовать плагин url в качестве стандартной практики при создании выходных данных, оптимизированных для обработки пакетами JS.

Следующие примеры приложений основаны на Rollup. Аналогичные понятия применяются при использовании других JS пакетов.

Демонстрационные примеры приложений:

Blazor ServerКонфигурация MapFallbackToPage

Этот раздел применяется только к приложениям Blazor Server . MapFallbackToPage не поддерживается ни в Blazor Web Appах, ни в Blazor WebAssembly приложениях.

В сценариях, где приложению требуется отдельная область с настраиваемыми ресурсами и компонентами Razor, выполните приведенные ниже действия.

  • Создайте папку в папке Pages приложения для хранения ресурсов. Например, раздел администратора приложения создается в новой папке с именем Admin (Pages/Admin).

  • Создайте корневую страницу (_Host.cshtml) для области. Например, создайте файл Pages/Admin/_Host.cshtml на основе основной корневой страницы приложения (Pages/_Host.cshtml). Не указывайте директиву @page на странице _Host администратора.

  • Добавьте макет к папке области (например, Pages/Admin/_Layout.razor). В макете для отдельной области задайте тег <base>href в соответствии с папкой области (например, <base href="/Admin/" />). В демонстрационных целях добавьте ~/ к статическим ресурсам на странице. Например:

    • ~/css/bootstrap/bootstrap.min.css
    • ~/css/site.css
    • ~/BlazorSample.styles.css (пространство имен для примера приложения — BlazorSample)
    • ~/_framework/blazor.server.js (скрипт Blazor)
  • Если область должна иметь собственную папку со статическими файлами, добавьте папку и укажите её расположение в промежуточном ПО для статических файлов в Program.cs (например, app.UseStaticFiles("/Admin/wwwroot")).

  • Компоненты Razor добавляются в папку области. Как минимум, добавьте компонент Index в папку области с правильной директивой @page для области. Например, добавьте файл Pages/Admin/Index.razor на основе заданного по умолчанию файла Pages/Index.razor приложения. Укажите область администратора в качестве шаблона маршрута в верхней части файла (@page "/admin"). Добавьте дополнительные компоненты по мере необходимости. Например, Pages/Admin/Component1.razor с директивой @page и шаблоном маршрута @page "/admin/component1.

  • В Program.cs вызовите MapFallbackToPage для пути запроса области сразу перед путем резервной корневой страницы до страницы _Host:

    ...
    app.UseRouting();
    
    app.MapBlazorHub();
    app.MapFallbackToPage("~/Admin/{*clientroutes:nonfile}", "/Admin/_Host");
    app.MapFallbackToPage("/_Host");
    
    app.Run();