Не могу поймать Win32Exception

Поэтому я получаю Win32Exception во время транзакции Entity Framework "Any". Машина БД находится в автономном режиме, так что этого следовало ожидать. Это приложение для мониторинга, поэтому я хочу сообщить, что машина недоступна, но она не улавливает ошибку.

Ошибка: (сообщает Elmah)

System.ComponentModel.Win32Exception Сетевой путь не найден

System.Data.SqlClient.SqlException (0x80131904): во время установки соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): сетевой путь не найден в System.Data.SqlClient.SqlInternalConnection.OnError(Исключение SqlException, Boolean breakConnection, Action`1 wrapCloseInAction)

Итак, вот мой (псевдо) код:

if(Monitor.TryEnter(Variables))
try
{
    foreach(var thing in things)
    {
        try
        {
            using(var ctx = new context())
            {
                Do Stuff... 
                if(thing.Any()) <-- Error
                Do more stuff... like look for problems.
            }
        }
        catch(Win32Exception)
        {
            Add exception to list of problems.;
        }
        catch(exception)
        {
            throw; //I was just seeing if this would help, it didn't
        }
     }
     Return list of problems
}
catch(Exception ex)
{
    Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
finally
{
    Monitor.Exit(variables)
}

Поэтому я надеюсь, что вы видите, что Win32Exception должно быть перехвачено, но это не так - Элма сообщает об этом. Обнаруженные в базе данных ошибки обнаруживаются и сообщаются надлежащим образом. Все работает до тех пор, пока не произойдет это Win32Exception, а затем просто игнорирует мой улов.

0 ответов

Другие вопросы по тегам