如何指示IIS使用来自web.config的环境变量来运行.net核心应用程序?

时间:2018-12-26 05:57:15

标签: iis .net-core asp.net-core-2.2

最近,在IIS上托管.net core 2.2应用程序时遇到一个奇怪的问题。

托管后,我收到“ 启动应用程序时发生错误”。为了确定根本原因,我启用了日志文件,发现它是由于环境变量问题引起的。

我在web.config文件中配置了环境变量,如下所示,

<aspNetCore processPath="dotnet" arguments=".\PctrClient.Api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
    <environmentVariables>
      <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    </environmentVariables>
  </aspNetCore>

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
               .UseStartup<Startup>()
               .UseIISIntegration();
}

但是网络应用将其解释为Development;Development。怎么可能?

日志文件中的信息

  

info托管环境:开发;开发

2 个答案:

答案 0 :(得分:0)

我遇到了有关IIS的问题,并用标签更改了applicationHost.config。现在,我可以将同一IIS与不同的环境一起使用。每个Web应用程序。

答案 1 :(得分:0)

为了解决此问题,我们必须在system级别或web.config文件中设置环境变量。 (如果我们在两个地方都设置了环境变量,它将由.net core 2.2框架附加)

从我的角度看,这似乎是一种奇怪的行为,因此我在GitHub/AspNetCore中提出了此问题,以了解其他社区用户的想法,希望此问题能尽快得到解决。