gpt4 book ai didi

c# - asp.net core 2.2 不使用 WebApp Azure 配置中设置的 ConnectionString

转载 作者:行者123 更新时间:2023-12-03 05:43:38 24 4
gpt4 key购买 nike

我已将 asp.net core 2.2 应用程序部署到 Azure。在 Azure 门户中,我为应用程序添加了一个连接字符串,但 asp.net core 没有选择该连接字符串,而是使用 appsettings.json 中的连接字符串。

我做了什么来检查这个?我刚刚将在 Azure 中输入的连接字符串复制到 appsettings.json 文件(因此替换了开发版本),重新部署它并且工作正常。

有什么建议吗?

public class Program
{
public static void Main(string[] args)
{
WebHost
.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build()
.Run();
}
}

从startup.cs中摘录

        public void ConfigureServices(IServiceCollection services)
{
...
services.AddDbContext<BattMobilityDbContext>(option => option.UseSqlServer(_configuration.GetConnectionString("BattMobilityDbConnection")));
...
}

从应用程序设置中提取。

  "ConnectionStrings": {
"BattMobilityDbConnection": "Data Source=localhost\\SQLEXPRESS_JSL; initial catalog=BattMobility; integrated security=true"
},

来自 Azure 的屏幕截图

enter image description here

最佳答案

解决方案是在 DbContext 的 OnConfiguring 中添加对环境变量的支持

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (_loggerFactory != null)
{
if (Debugger.IsAttached)
{
optionsBuilder.UseLoggerFactory(_loggerFactory);
}
}

var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
// this was the missing part
.AddEnvironmentVariables()

.Build();
var connectionString = configuration.GetConnectionString("xxx");

optionsBuilder.UseSqlServer(connectionString);
}

关于c# - asp.net core 2.2 不使用 WebApp Azure 配置中设置的 ConnectionString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com