Azure AppService上加载了错误的设置

ds97pgxw  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(115)

我有一个asp.net核心应用程序,它有身份服务器的设置。为此,我有一个appsettings.json,一个appsettings.Development.json和一个appsettings.Production.json。
appsettings.json:

..
  "ApplicationInsights": {
    "InstrumentationKey": ""
  },
  "IdentityServer": {
    "Clients": {
      "ApplySupportTool.Client": {
        "Profile": "IdentityServerSPA"
      }
    }
  },
  "BuildInfo": {
    "Environment": "Integration",
    "Version": "1.0.0 Beta"
  },
..

appsettings.Development.json

{
  "IdentityServer": {
    "Key": {
      "Type": "Development"
    }
  }
}

appsettings.Production.json

{
  "IdentityServer": {
    "Key": {
      "Type": "Store",
      "StoreName": "My",
      "StoreLocation": "CurrentUser",
      "Name": "[Name]"
    }
  }
}

这在本地是没有问题的,我可以通过从launchsettings中删除环境变量来在它们之间切换:

"environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    }

在加载设置文件模拟到默认模板方面,我的HostBuilder是这样创建的,没有为设置文件添加任何特殊内容。

public static IHostBuilder CreateHostBuilder(string[] args)
    {
        return Host.CreateDefaultBuilder(args)
                   .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                   .ConfigureWebHostDefaults(webHostBuilder =>
                   {
                       webHostBuilder
                          .UseContentRoot(Directory.GetCurrentDirectory())
                          .UseStartup<Startup>()
                          .UseAzureAppServices();
                   })
                   .UseSerilog();
    }

当我签入Startup.cs的构造函数时,我可以验证它是否也加载了附加文件。
但当我将其部署到Azure时,似乎总是加载开发版本。据我所知,在没有设置值的情况下,它应该用于生产(在本地工作)。为了确保安全,我还尝试将值为“Production”的ASPNETCORE_ENVIRONMENT显式添加到我的AppService。但这也没有改变任何东西。我必须以特殊方式加载它吗?

oyxsuwqo

oyxsuwqo1#

希望开发不会保留在Program.cs中的最后一个位置,因为它会覆盖您的appsetting和production.json

var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();

同样在WebAPP刀片中,如果你覆盖了ASPNETCORE_ENVIRONMENT变量,需要重新启动示例以反映和重新加载更改。
此外,您的program.cs的更多信息将帮助我们找到根本原因。

hi3rlvi2

hi3rlvi22#

也许它会帮助某些人。我以为也有同样的问题。但我发现我在多个地方设置了环境变量=“Development”。在我的项目设置中,在IIS中,在web.config中。当我删除这些设置时,所有设置都开始按设计工作。此web.config设置被部署到Azure,然后由Azure使用来设置环境变量。

<aspNetCore processPath="bin\Debug\net5.0\MyApp.exe" arguments="" stdoutLogEnabled="false" hostingModel="InProcess">
        <environmentVariables>
              <!--environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /-->
        </environmentVariables>
      </aspNetCore>

相关问题