Итак, мой клиент говорит, что хочет управлять некоторой информацией на своем веб-сайте в отдельном файле доступа и время от времени загружать ее.Это разумный запрос, поэтому я внедряю загрузчик, который создает резервную копию текущего файла в целях безопасности.
Проблема заключается в том, что у них медленное соединение с почтовым голубем и время загрузки истекло, или кто-то заходит на веб-сайт, покафайл перезаписывается или звезды выровнены точно так же, и любая часть сайта, которая получает данные из файла ms-access, падает до тех пор, пока файл web.config не будет скопирован повторно, что приведет к перезагрузке сайта.
Имеется файл, который никогда не перезаписывается, и следующий эпический подход "избыточность" / "отработка отказа" завершается неудачей, или я почти, но не совсем получилрабочее решение здесь (очевидно, они все еще получают ошибки в вышеупомянутых особых обстоятельствах, опять же невоспринимаемые местными тестировщиками)
private static OleDbConnection conn;
public static OleDbConnection GetAccessConnection()
{
if(conn == null)
{
string connstring;
try
{
connstring = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
conn = new OleDbConnection(connstring);
ExecuteNonQuery("SELECT TOP 1 * FROM MyTable");
return conn;
}
catch
{
connstring = ConfigurationManager.ConnectionStrings["AccessConnectionString1"].ConnectionString;
conn = new OleDbConnection(connstring);
ExecuteNonQuery("SELECT TOP 1 * FROM ServiceProviders");
return conn;
}
}
return conn;
}
с
<connectionStrings>
<add name="AccessConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={My File Path};Persist Security Info=False;"/>
<add name="AccessConnectionString1" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={My Backup File Path};Persist Security Info=False;"/>
</connectionStrings>