在IIS中重写appsettings.json

在IIS中重写appsettings.json,iis,.net-core,Iis,.net Core,我有一个.net核心web项目,正在Windows(10或服务器)上发布到IIS。我似乎无法让IIS通过配置编辑器提供连接字符串。我希望连接字符串在这里,这样它就不会在每次部署后被覆盖 我尝试过使用ASPNETCORE\u ConnectionStrings\u\u DefaultConnection和ConnectionStrings:DefaultConnection但该作业也没有,我总是收到一个500错误,说明连接字符串不能为空 我错过了什么 下面是我的Startup.cs文件的一部分:请

我有一个.net核心web项目,正在Windows(10或服务器)上发布到IIS。我似乎无法让IIS通过配置编辑器提供连接字符串。我希望连接字符串在这里,这样它就不会在每次部署后被覆盖

我尝试过使用
ASPNETCORE\u ConnectionStrings\u\u DefaultConnection
ConnectionStrings:DefaultConnection
但该作业也没有,我总是收到一个500错误,说明连接字符串不能为空

我错过了什么

下面是我的
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();
        }
}
公共类启动
{
公共启动(IHostingEnvironment环境)
{
var builder=new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile(“appsettings.json”,可选:true,重载更改:true)
.AddJsonFile($“appsettings.{env.EnvironmentName}.json”,可选:true)
.AddUserSecrets()
.AddenEnvironmentVariables();
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>();
    }
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>

WebHost.CreateDefaultBuilder(args)//我认为您需要从环境变量中删除ASPNETCORE_uu前缀(只删除连接字符串而不是ASPNETCORE_u环境)

我在这里查看环境变量配置提供程序的Microsoft源代码:

如果你想的话,它确实需要一个“前缀”,但是当我查看“CreateDefaultBuilder”的源代码时:

它只是使用空前缀param调用它,这意味着您根本不应该使用任何前缀:

config.AddEnvironmentVariables();

当然,您可以手动添加对AddenEnvironmentVariables的调用,使用您选择的前缀,然后也可以将其添加到您的环境变量中

@LexLi我已经读过了,从我的问题中可以看出,我已经尝试了
ASPNETCORE\uu
,它应该可以使用OTB。您提供的链接是关于自定义前缀的。Can您创建了一个可复制的小应用程序,用于复制您的问题并上载到Github?例如,您可能缺少对.AddenEnvironmentVariables()的调用etc@MindingData我更新了问题。我忘了提到我有
.AddEnvironmentVariables()
。我将创建一个简单的web应用程序并发布到Github。您可以尝试删除ASPNETCORE部分吗?我正在查看配置提供程序并从CreateDefaultBuilder进行跟踪,它没有传递“前缀”所以我认为你不应该使用ASPNETCORE。谢谢你的帮助。我不敢相信我没有想到去阅读源代码。我在这个主题上发现的大部分内容都是关于Azure的,而且有几篇文章听起来好像它需要前缀。我想,有时候它只是需要一双新的眼睛。