在IIS中重写appsettings.json
我有一个.net核心web项目,正在Windows(10或服务器)上发布到IIS。我似乎无法让IIS通过配置编辑器提供连接字符串。我希望连接字符串在这里,这样它就不会在每次部署后被覆盖 我尝试过使用在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文件的一部分:请
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的,而且有几篇文章听起来好像它需要前缀。我想,有时候它只是需要一双新的眼睛。