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


Размещение и развертывание 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. Оставьте расположение по умолчанию в поле выбора папки или укажите другое расположение. Выберите кнопку Publish.

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

Места публикации

  • Blazor Web App: Приложение публикуется в папке /bin/Release/{TARGET FRAMEWORK}/publish, где {TARGET FRAMEWORK} обозначает целевой фреймворк. Разверните содержимое папки publish на узле.
  • Автономное Blazor WebAssembly: приложение опубликовано в папку 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/wwwroot папке или bin\Release\{TARGET FRAMEWORK}\browser-wasm\publish в зависимости от версии пакета SDK, используемого для публикации приложения. Чтобы развернуть приложение как статический сайт, скопируйте содержимое папки wwwroot на хостинг статического сайта.
    • Хостинг: клиентское Blazor WebAssembly приложение публикуется в /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot папке серверного приложения вместе с другими статическими веб-ресурсами клиентского приложения. Разверните содержимое папки publish на узле.

IIS

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

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

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

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

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();