Saya memiliki aplikasi web saya (PRODUCTION, STAGING, TEST) di-host di server web IIS. Jadi tidak mungkin untuk bergantung pada variabel lingkungan sistem operatif ASPNETCORE_ENVIRONMENT, karena mengaturnya ke nilai tertentu (misalnya STAGING) berpengaruh pada aplikasi lain.
Sebagai solusi, saya mendefinisikan file khusus (envsettings.json) dalam solusi visualstudio saya:
dengan konten berikut:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
Kemudian, berdasarkan pada jenis aplikasi saya (Produksi, Pementasan atau Uji) saya mengatur file ini sesuai: seandainya saya menggunakan aplikasi TEST, saya akan memiliki:
"ASPNETCORE_ENVIRONMENT": "Test"
Setelah itu, dalam file Program.cs hanya mengambil nilai ini dan kemudian mengatur lingkungan 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();
}
}
Ingatlah untuk menyertakan envsettings.json dalam publishOptions (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
Solusi ini membuat saya bebas untuk memiliki aplikasi ASP.NET CORE yang di-host pada IIS yang sama, terlepas dari nilai variabel envoroment.
Properties\launchSettings.json
untuk mensimulasikan lingkungan lain untuk debugging di Visual Studio.