SQL连接失败时启动ASP.NET核心应用程序的正确方法是什么

时间:2019-06-18 19:53:50

标签: asp.net-core

我有一个按需启动的ASP.NEt核心2.1服务器。因此,当有人进入网页时。我的SQL Server位于Web服务器之外的其他位置,并且在某些情况下SQL Server无法启动并运行。因此,我需要在没有SQL服务器的情况下正常启动Web服务器。但是,因此它当然会尝试首先连接到SQL Server。

这在ASP.NET Core 1.1中以某种方式工作,但是现在使用2.1,我收到了InvalidOperationException异常:没有为此DbContext配置数据库提供程序。

我正在使用动态连接字符串,并且我有一个函数可以返回其他一些信息的连接字符串(例如,如果以前已经检测到故障。)

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = getConnectionString();
        try
        {
            base.OnConfiguring(optionsBuilder);
            if (connectionString != "failure")
            {
                optionsBuilder
                    .EnableSensitiveDataLogging(true)
                    .ReplaceService<IMigrationsAnnotationProvider, CustomAnnotationProvider>()
                    .UseSqlServer(connectionString);
            }
            else
            {
                optionsBuilder
                    .EnableSensitiveDataLogging(true)
                    .ReplaceService<IMigrationsAnnotationProvider, CustomAnnotationProvider>();
            }
        }
        catch (Exception ex)
        {
            setConnectionStatus(CONNECTION_STATUS_FAILURE, ex.Message);
            return;
        }
    }
}

那么,如果我知道连接将会失败,或者我可以在异常处理程序中做些什么,那么我需要在此OnConfiguring方法中做什么?

0 个答案:

没有答案