我有一个按需启动的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方法中做什么?