在我的生产服务器上,我通过添加以下内容来设置环境变量/etc/environment:
ASPNETCORE_ENVIRONMENT=Production
Run Code Online (Sandbox Code Playgroud)
我检查了它printenv ASPNETCORE_ENVIRONMENT在重启后记录了.
我的服务器是Ubuntu 14.04,我使用的是asp.net核心1.1.
它正在加载我appsettings.Development.json而不是appsettings.Production.json.
这是我的startup.cs构造函数
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Run Code Online (Sandbox Code Playgroud)
在我的日志文件中我可以正确地看到它说Hosting environment: Production但如果我从配置文件中输出值来查看,那么它是来自内容的值appsettings.Development.json.
我甚至尝试appsettings.Development.json从服务器删除并重新启动整个服务器,但它仍然提取相同的值,我想它必须在某处编译.
我也尝试将其添加到.csproj:
<ItemGroup>
<None Include="appsettings.*.json" CopyToPublishDirectory="Always" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我的设置文件显示嵌套在VS2017中,如下所示:
默认的appsettings.json只有一个defualt值用于记录,它不包含我提取的值.
我无法弄清楚问题是什么.
也许可能性不大,但你可能已经陷入了和我一样的陷阱。您需要appsettings.*.json在发布过程中显式包含基于环境的文件。默认情况下,我没有包含它们,尽管我还没有检查最新的项目模板来看看这是否仍然正确。如果您还没有检查该appsettings.Production.json文件是否实际存在于您的生产服务器上,那么可能值得一看。
如果事实证明这是您的问题并且您仍在使用project.json,那么如果您的问题看起来像我以前的问题,您将需要添加如下内容:
"publishOptions": {
"include": [
"wwwroot",
"appsettings.json",
"appsettings.*.json",
"web.config"
]
}
Run Code Online (Sandbox Code Playgroud)
其中"appsettings.*.json"条目是最重要的。
如果您已升级到此csproj链接,则可以帮助您了解新项目文件格式所需的内容。
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |