У мене на веб-сервері IIS розміщені мої веб-додатки (ВИРОБНИЦТВО, СТАГІНГ, ТЕСТ). Таким чином, не вдалося покластися на системну змінну навколишнього середовища оперативного ASPNETCORE_ENVIRONMENT, оскільки встановлення її на певне значення (наприклад, STAGING) впливає на інші програми.
Як обхід, я визначив спеціальний файл (envsettings.json) у своєму візуальному студії:
із наступним вмістом:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
Тоді, виходячи з типу мого додатка (Виробництво, Постановка чи Тест), я встановив цей файл відповідним чином: припустимо, я розгортаю програму TEST, у мене буде:
"ASPNETCORE_ENVIRONMENT": "Test"
Після цього у файлі Program.cs виберіть це значення та встановіть середовище webHostBuilder:
public class Program
{
public static void Main(string[] args)
{
var currentDirectoryPath = Directory.GetCurrentDirectory();
var envSettingsPath = Path.Combine(currentDirectoryPath, "envsettings.json");
var envSettings = JObject.Parse(File.ReadAllText(envSettingsPath));
var enviromentValue = envSettings["ASPNETCORE_ENVIRONMENT"].ToString();
var webHostBuilder = new WebHostBuilder()
.UseKestrel()
.CaptureStartupErrors(true)
.UseSetting("detailedErrors", "true")
.UseContentRoot(currentDirectoryPath)
.UseIISIntegration()
.UseStartup<Startup>();
// If none is set it use Operative System hosting enviroment
if (!string.IsNullOrWhiteSpace(enviromentValue))
{
webHostBuilder.UseEnvironment(enviromentValue);
}
var host = webHostBuilder.Build();
host.Run();
}
}
Не забудьте включити envsettings.json до публікаціїOptions (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
Це рішення дозволяє мені вільно розміщувати додаток ASP.NET CORE на тому ж IIS, незалежно від значення змінної envoroment.
Properties\launchSettings.json
для імітації іншого середовища для налагодження у Visual Studio.