Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET核心Web API未正确读取环境_C#_.net_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# .NET核心Web API未正确读取环境

C# .NET核心Web API未正确读取环境,c#,.net,asp.net-core,asp.net-core-webapi,C#,.net,Asp.net Core,Asp.net Core Webapi,我有一个.NET Core 2.0 Web API无法读取特定于环境的app.settings文件。据我所知,我已经遵循了所有相关步骤 这是我的Startup.cs构造函数: public Startup(IHostingEnvironment env) { var config = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.

我有一个.NET Core 2.0 Web API无法读取特定于环境的app.settings文件。据我所知,我已经遵循了所有相关步骤

这是我的
Startup.cs
构造函数:

public Startup(IHostingEnvironment env)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables();
}
然后我有一个
appsettings.json
文件结构:

appsettings.json
  -appsettings.debug.json
  -appsettings.release.json
  -appsettings.production.json
在部署API的服务器上,我有一个系统环境变量key/value对

Variable=ASPNETCORE\u环境值=Release

但是,当我调用API时,会使用
appsettings.production.json
值,这是在未找到
ASPNETCORE\u environment
环境变量时的默认值


关于我的安装程序可能缺少什么导致此默认行为的想法?

您尚未指定,但我假设您在IIS中运行。如果是这种情况,您需要编辑应用程序池的高级属性,并将“加载用户设置”选项设置为true。否则,它实际上不会读取您的环境变量。

可能是与案例相关的问题?类似于
stringsetingsfilepath=$“appsettings.{env.EnvironmentName.ToLower()}.json”@ChristopherJ。文档说它不区分大小写,我的测试也显示了同样的情况。@bcwiniger检查文件名时,
AddJsonFile
方法肯定区分大小写,所以请将文件重命名为
appsettings.Release.json
或使用
.ToLower()
approach@Set根据上下文,它不区分大小写。“在Windows和macOS上,指定的环境名称不区分大小写。无论您将变量设置为Development或Development或Development,结果都是相同的。”。我已尝试更改env变量以匹配appsettings文件名,并尝试了
.ToLower()
方法。我正在打印存储在
IHostingEnvironment
中的环境名称,它将返回
Production
。AddJsonFile只使用作为第一个字符串参数提供的文件名。您可以使用env.EnvironmentName构造此字符串-所以此字符串值取决于您的env名称的大小写。2事实上,IHostingEnvironment.EnvironmentName中始终只有“Production”作为值,这意味着您没有正确定义环境名称“Load User Profile”,但这救了我一命。谢谢