簡體   English   中英

在 IIS 中覆蓋 appsettings.json

[英]Overriding appsettings.json in IIS

我有一個 .net 核心 web 項目,我正在 ZAEA23489CE3AA9B6406EBB28E 或服務器上發布到 IIS 項目。 我似乎無法讓 IIS 通過配置編輯器提供連接字符串。 我想要這里的連接字符串,這樣每次部署后它就不會被覆蓋。

我曾嘗試使用ASPNETCORE_ConnectionStrings__DefaultConnectionConnectionStrings:DefaultConnection但我總是收到 500 錯誤,指出連接字符串不能是 null。

我在這里想念什么?

這是我的Startup.cs文件的一部分: 請注意,此應用程序是在默認配置為您執行此操作之前的一段時間。

 public class Startup
 {
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddUserSecrets<Startup>()
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }
}

編輯:

我已經設置了一個全新的.Net Core 2.2 應用程序。 即使使用較新的程序/啟動。 連接字符串沒有通過。

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args) //<-- adds config.AddEnvironmentVariables();
                .UseStartup<Startup>();
    }

在此處輸入圖像描述

我認為您需要從環境變量中刪除 ASPNETCORE_ 前綴(只是您的連接字符串而不是 ASPNETCORE_ENVIRONMENT)。

我在這里查看環境變量配置提供程序的 Microsoft 源代碼: https://github.com/aspnet/Configuration/blob/d469707ab18eef7ed0002f00175a9ad5b0f36250/src/Config.EnvironmentVariables/EnvironmentVariablesConfigurationProvider。

如果您願意,它確實需要一個“前綴”,但是當我查看“CreateDefaultBuilder”的源代碼時: https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost .cs#L177

它只是用一個空的前綴參數調用它,這意味着你根本不應該使用任何前綴:

config.AddEnvironmentVariables();

您當然可以使用您選擇的前綴手動添加對 AddEnvironmentVariables 的調用,然后您也可以將其添加到您的環境變量中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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