IIS 웹 서버에서 호스팅되는 웹 응용 프로그램 (PRODUCTION, STAGING, TEST)이 있습니다. 따라서 특정 값 (예 : STAGING)으로 설정하면 다른 응용 프로그램에 영향을주기 때문에 ASPNETCORE_ENVIRONMENT 작업자의 시스템 환경 변수에 의존 할 수 없습니다.
이 문제를 해결하기 위해 Visualstudio 솔루션 내에 사용자 정의 파일 (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();
}
}
publishOptions (project.json)에 envsettings.json을 포함시켜야합니다.
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
이 솔루션을 사용하면 envoroment 변수 값과 관계없이 ASP.NET CORE 응용 프로그램을 동일한 IIS에서 호스팅 할 수 있습니다.
Properties\launchSettings.json
하기 위해 다른 환경 을 시뮬레이션 하는 데 사용할 수 있습니다 .