[英]Can't set production server to production
在我的生產服務器上,我通過在/etc/environment
添加以下內容來設置環境變量:
ASPNETCORE_ENVIRONMENT=Production
我檢查了它在重啟后用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();
}
在我的日志文件中,我可以正確地看到它說Hosting environment: Production
但如果我從配置文件輸出值到視圖,那么它是來自appsettings.Development.json
內容的appsettings.Development.json
。
我甚至嘗試從服務器刪除appsettings.Development.json
並重新啟動整個服務器,但它仍然提取相同的值,我想它必須在某處編譯。
我也嘗試將其添加到.csproj:
<ItemGroup>
<None Include="appsettings.*.json" CopyToPublishDirectory="Always" />
</ItemGroup>
我的設置文件顯示嵌套在VS2017中,如下所示:
默認的appsettings.json只有一個defualt值用於記錄,它不包含我提取的值。
我無法弄清楚問題是什么。
可能是一個長鏡頭,但你可能陷入了我所做的同一個陷阱。 您需要在發布過程中明確包含基於環境的appsettings.*.json
文件。 默認情況下,我沒有包含它們,但我沒有檢查最新的項目模板,看看是否仍然如此。 如果您尚未檢查appsettings.Production.json
文件是否實際存在於生產服務器上,則可能值得一看。
如果事實證明這是你的問題並且你仍在使用project.json
那么如果你看起來像我以前那樣,你需要添加如下內容:
"publishOptions": {
"include": [
"wwwroot",
"appsettings.json",
"appsettings.*.json",
"web.config"
]
}
隨着"appsettings.*.json"
條目的重要性。
如果您已升級到csproj
則此鏈接可幫助您以新項目文件格式計算出您需要的內容。
仔細檢查啟動應用程序時ASPNETCORE_ENVIRONMENT
的值。 例如,如果您在啟動日志中看到Hosting environment: Development
,則不會為此過程設置該值。
請注意, export
集變量ONLY
適用於當前shell,所有進程都是從當前shell啟動的。 對於永久設置,您需要修改.bashrc
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.