[英]Azure Environmental Variables how to override web.config value?
我正在 .net 核心 web api 上進行 dotnet 發布,它生成了一個Z2567A58EC9705EB7AC2CE下面這對開發人員來說很好,因為 RayGunKey 是正確的值,但是當我將它放在臨時環境中時,它仍然具有“SOME-KEY-HERE”值! 即使我在 staging web api's Configuration -> Application Settings下創建了RayGunKey (具有不同的值)。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyApi.dll" stdoutLogEnabled="false" hostingModel="InProcess" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44392" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
<environmentVariable name="RayGunKey" value="SOME-KEY-HERE" />
<environmentVariable name="COMPLUS_ForceENC" value="1" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
我沒有配置好啟動文件嗎? 我怎樣才能讓它拉出暫存RagGunKey而不是使用在發布命令中創建的那個?
我目前正在使用以下代碼,它似乎確實從web.config中提取了值,但正如我所說,我想從 azure 應用程序設置(環境變量)中提取它
var rayGunKey = Environment.GetEnvironmentVariable("RayGunKey");
我經常對環境變量感到困惑,尤其是在這種情況下。 直接調用azure中的應用程序設置和其他地方的環境變量不直觀!
提前謝謝了
好的,所以我必須專注於launchSettings.json並在那里添加我的環境變量,它看起來是放置它們的好地方。 然后 Visual Studio 創建 web.config 文件並使用 launchSettings.json 文件中定義的這些值填充它。 這似乎很糟糕,因為現在當我執行dotnet 發布時,文件將在其中定義最后的 web.config 值。 在這種情況下,將放在暫存區的開發細節。 即使我嘗試在暫存時創建環境變量,據說 web.config 優先,因此不會看到該值。
相反,我使用appsetting來配置它,所以唯一驅動配置的是launchSettings.json ASPNETCORE_ENVIRONMENT值。 運行應用程序時,它將查看此環境變量並在本例中獲取適當命名的 appsettings appsettings.Staging.json
只要我確保在我的每個環境(例如開發、暫存和生產)上都設置了此項,它就會從 appsettings..json 文件中讀取配置。請參閱如何執行此操作的屏幕截圖。 我也不再使用 Environment.GetEnvironmentVariable 了。
在我看來,這似乎是對曾經簡單得多的事情的正確處理和過度復雜化
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.