我有一个.net核心Web项目,该项目正在发布到Windows(10或服务器)上的IIS。我似乎无法让IIS通过配置编辑器提供连接字符串。我希望在这里使用连接字符串,以免每次部署后都将其覆盖。
我尝试使用ASPNETCORE_ConnectionStrings__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();
}
}
我已经安装了一个全新的.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>();
}
答案 0 :(得分:1)
我认为您需要从环境变量中删除ASPNETCORE_前缀(只是您的连接字符串而不是ASPNETCORE_ENVIRONMENT)。
我在这里查看环境变量配置提供程序的Microsoft源代码:https://github.com/aspnet/Configuration/blob/d469707ab18eef7ed0002f00175a9ad5b0f36250/src/Config.EnvironmentVariables/EnvironmentVariablesConfigurationProvider.cs
如果需要的话,它确实需要一个“前缀”,但是当我查看“ CreateDefaultBuilder”的源代码时:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs#L177
它只是使用一个空的前缀参数来调用它,这意味着您根本不应该使用任何前缀:
config.AddEnvironmentVariables();
您当然可以手动将调用添加到具有所选前缀的AddEnvironmentVariables中,然后您也可以将其添加到环境变量中