簡體   English   中英

無法將生產服務器設置為生產

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM