Mam swoje aplikacje internetowe (PRODUKCJA, STAGING, TEST) hostowane na serwerze internetowym IIS. Nie można było więc polegać na zmiennej środowiskowej operatywnej systemu ASPNETCORE_ENVIRONMENT, ponieważ ustawienie jej na określoną wartość (na przykład STAGING) ma wpływ na inne aplikacje.
Aby obejść ten problem, zdefiniowałem niestandardowy plik (envsettings.json) w moim rozwiązaniu Visualstudio:
o następującej treści:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
Następnie, w oparciu o typ mojej aplikacji (produkcja, staging lub test), ustawiam ten plik odpowiednio: zakładając, że wdrażam aplikację TEST, będę miał:
"ASPNETCORE_ENVIRONMENT": "Test"
Następnie w pliku Program.cs pobierz tę wartość, a następnie ustaw środowisko webHostBuildera:
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();
}
}
Pamiętaj, aby dołączyć plik envsettings.json do pliku PublishedOptions (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
Dzięki temu rozwiązaniu mogę swobodnie korzystać z aplikacji ASP.NET CORE hostowanej w tych samych usługach IIS, niezależnie od wartości zmiennej środowiska.
Properties\launchSettings.json
do symulowania innego środowiska do debugowania w programie Visual Studio.