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

标签 c# azure configuration connection-string asp.net-core-2.2

我已将 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/

相关文章:

c# - Entity Framework 代码优先 : How can I cast a set of entities returned from the database?

azure - 为什么 Azure 虚拟网络快速路由网关需要公共(public) IP?

java - IntelliJ IDEA Gradle 与 Maven "Run all tests"通过右键单击 `sources-root` 与 `test-sources-root` 文件夹?

C# HTTP Web 请求一直超时

c# - 如何用C#绘制表格?

c# - Azure 数据库和照片

.net - 使用 NLog 登录 EventLog 的正确方法

sql-server - 在 SQL CLR 程序集中配置远程数据库连接字符串

c# - 有没有办法让 .Net JIT 或 C# 编译器优化掉空的 for 循环?

azure - 如何使用 Terraform 和 Azure 强制删除/释放网络服务组?