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

How to instruct IIS to use environment variable from web.config, to run the .net core application?

最近,我在 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 Hosting environment: Development;Development

我遇到了关于 IIS 的问题,我用标签更改了 applicationHost.config。现在我可以在不同的环境中使用相同的 IIS。对于每个网络应用程序。

为了解决这个问题,我们必须在 system 级别或 web.config 文件中设置环境变量。 (如果我们在两个地方都设置环境变量,它会被.net core 2.2 framework追加)

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