Мы подключаемся к Access DB через OLE DB Connection, и она работала до последнего обновления офиса. Теперь после получения последней версии MS Office
System.Runtime.InteropServices.SEHException: 'External component has thrown an exception.'
Моя конфигурация сборки - x86, а ядро базы данных Access также 32-разрядное. Итак, в качестве решения я восстановил механизм доступа, и он начинает работать. Но я могу воспроизвести проблему с кодом ниже
static void Main(string[] args)
{
var _conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.accdb; Persist Security Info=False";
try
{
Task.Run(() =>
{
using (var con = new OleDbConnection(_conStr))
{
//This Call 1
con.Open();
}
});
using (OleDbConnection OleDbConnection = new System.Data.OleDb.OleDbConnection(_conStr))
{
// This Call 2
OleDbConnection.Open();
}
Console.WriteLine("Hello World 1!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("Hello World 2!");
Console.ReadKey();
}
}
В вызове 2 только я получаю это исключение. Но самое запутанное, как это проблема с последним обновлением. Как получится, если я исправлю ядро базы данных доступа.
Что такое исправление для приведенного выше кода? Я использовал много задач в своем приложении.
Заранее спасибо