Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Это не последняя версия этой статьи. Для текущего релиза смотрите версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. Для текущего релиза смотрите версию .NET 9 этой статьи.
Это важно
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых в отношении информации, предоставленной здесь.
Для текущего релиза смотрите версию .NET 9 этой статьи.
В этой статье объясняется, как настроить и прочитать среду в Blazor приложении.
При локальном запуске приложения среда по умолчанию устанавливается в Development. Когда приложение выпускается, среда по умолчанию устанавливается как Production.
Рекомендуется использовать следующие соглашения:
Всегда используйте имя среды "
Development" для локальной разработки. Это связано с тем, что платформа ASP.NET Core ожидает именно это имя при настройке приложения и инструментов для локальных запусков разработки приложения.Для тестирования, промежуточной и рабочей среды всегда публикуйте и развертывайте приложение. Вы можете использовать любую схему именования окружений для опубликованных приложений, но всегда применяйте имена файлов конфигурации приложения, в которых регистр сегмента окружения точно соответствует названию окружения. Для промежуточного выполнения используйте "
Staging" (прописные "S") в качестве имени среды и назовите файл параметров приложения так, чтобы он соответствовал (appsettings.Staging.json). Для производства используйте "Production" (заглавную "P") в качестве имени среды и назовите файл настроек приложения в соответствии (appsettings.Production.json).
Настройка среды
Среда устанавливается с помощью любого из следующих подходов:
- Blazor Web App или Blazor Server: используйте любой из подходов, описанных в средах выполнения ASP.NET Core для общих приложений ASP.NET Core.
- Любое Blazor приложение: Blazor запуск конфигурации
- Автономное Blazor WebAssembly:
<WasmApplicationEnvironmentName>свойство
На клиенте для Blazor Web App, среда определяется с сервера с помощью HTML-комментария, с которым разработчики не взаимодействуют.
<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->
Для автономного Blazor WebAssembly приложения задайте среду со <WasmApplicationEnvironmentName> свойством в файле проекта приложения (.csproj). Следующий пример задает Staging среду:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
Среды по умолчанию — Development для сборки и Production для публикации.
- Blazor Web App или Blazor Server: используйте любой из подходов, описанных в средах выполнения ASP.NET Core для общих приложений ASP.NET Core.
- Любое Blazor приложение:
-
Blazor WebAssembly:
Blazor-Environmentзаголовок
На клиенте для Blazor Web App среда определяется с сервера с помощью промежуточного слоя, который передает среду в браузер через заголовок с именем Blazor-Environment. Заголовок задает среду при создании WebAssemblyHost в клиентском файле Program (WebAssemblyHostBuilder.CreateDefault).
Для автономного Blazor WebAssembly приложения, работающего локально, сервер разработки добавляет Blazor-Environment заголовок с именем среды, полученной из среды размещения. Среда размещения задает окружение из переменной среды ASPNETCORE_ENVIRONMENT, определенной файлом проекта Properties/launchSettings.json. Значение по умолчанию переменной среды в проекте, созданном на основе шаблона Blazor WebAssembly проекта Development. Дополнительные сведения см. в разделе "Настройка клиентской среды с помощью раздела заголовка ".
- Blazor Server: Для общих приложений ASP.NET Core используйте любой из подходов, описанных в средах выполнения ASP.NET Core.
- Blazor Server или Blazor WebAssembly:
-
Blazor WebAssembly:
Blazor-Environmentзаголовок
На клиенте размещенного Blazor WebAssembly приложения среда определяется сервером с помощью промежуточного слоя, которое передает среду в браузер через заголовок, названный Blazor-Environment. Заголовок задает среду при создании WebAssemblyHost в клиентском файле Program (WebAssemblyHostBuilder.CreateDefault).
Для автономного Blazor WebAssembly приложения, работающего локально, сервер разработки добавляет Blazor-Environment заголовок с именем среды, полученной из среды размещения. Среда размещения задает окружение из переменной среды ASPNETCORE_ENVIRONMENT, определенной файлом проекта Properties/launchSettings.json. Значение по умолчанию переменной среды в проекте, созданном на основе шаблона Blazor WebAssembly проекта Development. Дополнительные сведения см. в разделе "Настройка клиентской среды с помощью раздела заголовка ".
Для локального запуска приложения в разработке приложение по умолчанию использует Development среду. Публикация приложения по умолчанию использует среду Production.
Общие рекомендации по настройке приложений ASP.NET Core см. в ASP.NET средах выполнения Core. Сведения о конфигурации приложений на стороне сервера со статическими файлами в средах, отличных от среды
Настройка клиентской среды с помощью Blazor конфигурации запуска
Следующий пример начинается Blazor в Staging среде, если имя узла содержит localhost. В противном случае для среды устанавливается значение по умолчанию.
Blazor Web App:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
webAssembly: {
environment: "Staging"
}
});
} else {
Blazor.start();
}
</script>
В предыдущем примере заполнитель {BLAZOR SCRIPT} обозначает путь к скрипту и имя файла Blazor. Сведения о расположении скрипта см. в разделе
Примечание.
Для Blazor Web Appэтого webAssembly>environmentсвойства в Blazor.start конфигурации рекомендуется сопоставить среду на стороне сервера с средой, заданной в свойстве.environment В противном случае предварительное отображение на сервере работает в другой среде, отличной от отрисовки на клиенте, что приводит к произвольным последствиям. Общие рекомендации по настройке среды для Blazor Web App см. в средах выполнения ASP.NET Core.
Самостоятельное Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
environment: "Staging"
});
} else {
Blazor.start();
}
</script>
В предыдущем примере заполнитель {BLAZOR SCRIPT} обозначает путь к скрипту и имя файла Blazor. Сведения о расположении скрипта см. в разделе
Использование свойства environment переопределяет среду, заданную заголовком Blazor-Environment.
Предыдущий подход задаёт среду клиента без изменения значения Blazor-Environment заголовка и не изменяет ведение журнальной записи консоли проекта сервера для среды запуска для Blazor Web App, которая приняла глобальную интерактивную визуализацию WebAssembly.
Чтобы записать среду в консоль в автономном приложении Blazor WebAssembly или в проекте .Client для Blazor Web App, поместите следующий код C# в файл Program после создания WebAssemblyHost с помощью WebAssemblyHostBuilder.CreateDefault и перед строкой, которая собирает и запускает проект (await builder.Build().RunAsync();):
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Дополнительные сведения о запуске Blazor см. в статье Запуск ASP.NET Core Blazor.
Настройка клиентской среды с помощью заголовка
Blazor WebAssembly приложения могут установить среду с заголовком Blazor-Environment. В частности, заголовок ответа должен быть установлен для _framework/blazor.boot.json файла, но нет вреда в установке заголовка в ответах файлового сервера на другие Blazor запросы файлов или всего Blazor развертывания.
Blazor Хотя платформа выдает имя заголовка в стиле kebab case с сочетанием прописных и строчных букв (Blazor-Environment), вы можете использовать либо полностью строчные, либо полностью заглавные буквы в формате kebab case (blazor-environment, BLAZOR-ENVIRONMENT).
Для локальной разработки с встроенным сервером разработки Blazor можно управлять значением заголовка Blazor-Environment, задав значение переменной ASPNETCORE_ENVIRONMENT в файле проекта Properties/launchSettings.json. При локальном запуске с сервером разработки порядок приоритета для определения среды приложения — Blazor.start конфигурация (environment ключ)>Blazor-Environment заголовка ответа (blazor.boot.json файл) >ASPNETCORE_ENVIRONMENT переменной среды (launchSettings.jsonфайл). Нельзя использовать метод переменной ASPNETCORE_ENVIRONMENT среды (launchSettings.json) для развернутого Blazor WebAssembly приложения. Этот метод работает только с сервером разработки на локальных запусках приложения.
IIS
В следующем примере для IIS пользовательский заголовок (Blazor-Environment) добавляется в опубликованный web.config файл. Файл web.config находится в папке bin/Release/{TARGET FRAMEWORK}/publish, где {TARGET FRAMEWORK} плейсхолдер является целевой платформой.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="Blazor-Environment" value="Staging" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Примечание.
Чтобы использовать пользовательский web.config файл для IIS, который не будет перезаписан при публикации приложения в папку publish, ознакомьтесь с материалом Хостинг и развертывание ASP.NET Core Blazor WebAssembly с помощью IIS.
Nginx
Для серверов Nginx используйте директиву add_header из ngx_http_headers_module:
http {
server {
...
location / {
...
add_header Blazor-Environment "Staging";
}
}
}
Дополнительные сведения см. в следующих ресурсах:
Apache
Для серверов Apache используйте директиву модуля Header: mod_headers
<VirtualHost *:80>
...
Header set Blazor-Environment "Staging"
...
</VirtualHost>
Дополнительные сведения см. в следующих ресурсах:
-
Документация Apache (поиск последнего выпуска для "
mod_headers") - Размещение и развертывание ASP.NET Core Blazor WebAssembly с помощью Apache
Настройка среды для службы приложений Azure
Для автономного Blazor WebAssembly приложения можно вручную задать среду с помощью конфигурации запуска или заголовкаBlazor-Environment.
Для серверного приложения настройте среду с помощью ASPNETCORE_ENVIRONMENT параметра приложения в Azure:
Убедитесь, что регистр сегментов среды в названиях файлов настроек приложения точно соответствует регистру названия самой среды. Например, совпадающее имя файла параметров приложения для
Stagingсредыappsettings.Staging.json. Если имя файла —appsettings.staging.json(строчная буква "s"), файл не расположен, а параметры в файле не используются вStagingсреде.Для развертывания Visual Studio убедитесь, что приложение развертывается в правильном слоте развертывания. Для приложения с именем
BlazorAzureAppSampleприложение развертывается вStagingслоте развертывания.В портале Azure для слота развертывания окружения настройте окружение, используя параметр
ASPNETCORE_ENVIRONMENTприложения. Промежуточный слот службы приложений для приложения с именемBlazorAzureAppSampleназываетсяBlazorAzureAppSample/Staging. Для конфигурацииStagingслота создайте настройку приложенияASPNETCORE_ENVIRONMENTс значениемStaging. Параметр слота развертывания включен для этой настройки.
При запросе в браузере BlazorAzureAppSample/Staging приложение загружается в среде Staging по адресу https://blazorazureappsample-staging.azurewebsites.net.
При загрузке приложения в браузере коллекция заголовков ответа для blazor.boot.json указывает, что значение заголовка Blazor-Environment равно Staging.
Настройки приложения из файла appsettings.{ENVIRONMENT}.json загружаются приложением, где {ENVIRONMENT} является переменной средой приложения. В предыдущем примере параметры из appsettings.Staging.json файла загружаются.
Чтение среды в Blazor WebAssembly приложении
Получите окружение приложения в компоненте, внедрив IWebAssemblyHostEnvironment и прочитав свойство Environment.
ReadEnvironment.razor:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Чтение среды на стороне клиента в Blazor Web App
Если предварительное создание не отключено для компонента или приложения, компонент в .Client проекте предварительно отображается на сервере. Так как сервер не имеет зарегистрированной IWebAssemblyHostEnvironment службы, невозможно внедрить службу и использовать методы расширения и свойства среды узла реализации службы во время предварительной подготовки сервера. Внедрение службы в интерактивный компонент WebAssembly или Interactive Auto приводит к следующей ошибке среды выполнения:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Чтобы устранить эту проблему, создайте пользовательскую реализацию службы для IWebAssemblyHostEnvironment на сервере. Дополнительную информацию и пример реализации см. в разделе "Реализация пользовательской службы на сервере" статьи о предварительной отрисовке, которая находится далее в Blazor документации.
Чтение клиентской среды во время запуска
Во время запуска WebAssemblyHostBuilder выставляет IWebAssemblyHostEnvironment через свойство HostEnvironment, которое обеспечивает логику, специфичную для среды, в коде построителя узлов.
В файле Program:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
Следующие удобные методы расширения, предоставляемые через WebAssemblyHostEnvironmentExtensions, позволяют проверять текущую среду на наличие Development, Production, Staging и пользовательских названий сред.
В файле Program:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
Свойство IWebAssemblyHostEnvironment.BaseAddress можно использовать во время запуска, если NavigationManager служба недоступна.
Дополнительные ресурсы
ASP.NET Core