Asp.net core 当SQL连接失败时,启动ASP.NET核心应用程序的正确方法是什么
我有一个按需启动的ASP.NEt core 2.1服务器。所以当有人进入网页时。我的SQL server位于web服务器以外的其他位置,有时SQL server无法启动和运行。因此,我需要在没有SQL server的情况下优雅地启动web服务器。但是,它当然会首先尝试连接到SQL server 这在ASP.NET Core 1.1中以某种方式起作用,但现在在2.1中我得到了异常InvalidOperationException:没有为此DbContext配置数据库提供程序 我使用的是动态连接字符串,我有一个函数,它要么返回连接字符串,要么返回其他一些信息(比如之前是否检测到故障)Asp.net core 当SQL连接失败时,启动ASP.NET核心应用程序的正确方法是什么,asp.net-core,Asp.net Core,我有一个按需启动的ASP.NEt core 2.1服务器。所以当有人进入网页时。我的SQL server位于web服务器以外的其他位置,有时SQL server无法启动和运行。因此,我需要在没有SQL server的情况下优雅地启动web服务器。但是,它当然会首先尝试连接到SQL server 这在ASP.NET Core 1.1中以某种方式起作用,但现在在2.1中我得到了异常InvalidOperationException:没有为此DbContext配置数据库提供程序 我使用的是动态连接字符
protectedoverride void onconfiguration(DbContextOptionsBuilder optionsBuilder)
{
string connectionString=getConnectionString();
尝试
{
基本配置(选项生成器);
如果(连接字符串!=“失败”)
{
选项生成器
.EnableSensitiveDataLogging(真)
.ReplaceService()
.UseSqlServer(connectionString);
}
其他的
{
选项生成器
.EnableSensitiveDataLogging(真)
.ReplaceService();
}
}
捕获(例外情况除外)
{
设置连接状态(连接状态故障,例如消息);
返回;
}
}
}
因此,如果我知道连接将失败,或者我可以在异常处理程序中执行某些操作,那么我需要在这个onconfigurang方法中执行哪些操作?这个问题似乎不再有效。最新的.Net core SDK(2.1.700)和.Net core运行时(2.1.11)似乎包含修复此问题的内容。此问题似乎不再有效。最新的.Net core SDK(2.1.700)和.Net core运行时(2.1.11)似乎包含了修复此问题的内容。
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;
}
}
}