Мой сайт работает под IIS среди дюжины других. Я хочу установить его среду размещения в Staging, но я не могу использовать переменную среды ASPNETCORE_ENVIRONMENT для ее установки из-за вышеупомянутых других сайтов.
Как я могу установить среду хостинга для определенного сайта.
P.S. Нашел документацию, в которой рассматривается этот конкретный сценарий. Короткая история — изменить web.config (да, устаревший файл).
Вы можете переопределить ASPNETCORE_ENVIRONMENT для одного сайта внутри IIS без изменения и повторного развертывания приложения.
system.webServer/aspNetCore
в раскрывающемся списке и справа от этого, НЕ ЗАБУДЬТЕ выбрать ApplicationHost.config
. Если вы забыли, вы установите эту переменную в используемом web.config
для работающего сайта. Затем, потому что он будет перезаписан при развертывании новой версии веб-сайта. ApplicationHost.config
устанавливает машинный уровень, поэтому настройка будет жить в другом месте.name
на ASPNETCORE_ENVIRONMENT
и value
на Staging
Также вы можете установить среду из кода или конфигурации с помощью метода UseEnvironment. Обратите внимание, что вам необходимо повторно развернуть приложение, чтобы применить эти изменения:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseEnvironment("Staging");
}
@AngryHacker learn.microsoft.com/en-us/aspnet/core/fundamentals/host/…
1. Нет необходимости модифицировать applicationHost.config. 2. Жесткая среда кода в исходном коде — явно плохой способ.
Хотя его нелегко найти, но когда Microsoft задокументировала модуль ASP.NET Core, они предоставили пример кода о том, как установить переменные среды в web.config, поэтому нет необходимости следовать другому ответу, чтобы изменить applicationHost.config.
<aspNetCore processPath = "dotnet"
arguments = ".\MyApp.dll"
stdoutLogEnabled = "false"
stdoutLogFile = ".\logs\stdout"
hostingModel = "inprocess">
<environmentVariables>
<environmentVariable name = "ASPNETCORE_ENVIRONMENT" value = "Development" />
<environmentVariable name = "CONFIG_DIR" value = "f:\application_config" />
</environmentVariables>
</aspNetCore>
Это то же самое web.config, сгенерированное dotnet publish, поэтому я считаю, что вы считаете естественным, что дальнейшие изменения происходят в том же месте.
Другой способ, которым вы можете захотеть, — это настроить такие переменные среды в пуле приложений.
@LexLi А как иначе? В документах не увидел.