У меня есть сервер ASP.NEt core 2.1, который запускается по требованию. Поэтому, когда кто-то заходит на веб-страницу. Мой SQL-сервер находится в другом месте, чем веб-сервер, и есть случаи, когда SQL-сервер не работает и работает. Поэтому мне нужно было бы изящно запустить веб-сервер без SQL-сервера. Но так, что он, конечно, сначала пытается подключиться к серверу SQL.
Это работало как-то в 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, если я знаю, что соединение не будет установлено или я могу что-то сделать в обработчике исключений?