Что не так с Microsoft.Practices.EnterpriseLibrary.Caching при попытке доступа к CacheFactory.GetCacheManager (); " - PullRequest
5 голосов
/ 09 ноября 2010

Что я здесь делаю не так или что я не делаю?(Я использую этот код в службе .NET 4.0 WCF)

        private static ICacheManager GetCacheManager()
    {
        try
        {                
            return CacheFactory.GetCacheManager();   
        }
        catch (SynchronizationLockException ex)
        {
            EventLogHelper.WriteError(ex);
        }
        catch (ConfigurationException ex)
        {
            EventLogHelper.WriteError(ex);
        }
        return null;
    }

Когда отладчик нажимает return, он выдает это исключение:

System.Threading.SynchronizationLockException произошла Сообщение = Метод синхронизации объекта былвызывается из несинхронизированного блока кода.Source = Microsoft.Practices.Unity StackTrace: в Microsoft.Practices.Unity.SynchronizedLifetimeManager.TryExit () в e: \ Builds \ Unity \ UnityTemp \ Compile \ Unity \ Unity \ Src \ Lifetime \ SynchronizedLifetimeManager.cs: строка 109 InnerException:

Это ошибка в библиотеке Предприятия?

Ответы [ 4 ]

8 голосов
/ 11 апреля 2011

Проблема действительно существует во многих блоках Enterprise Library. Это как-то связано со способом реализации Unity. Проблема не в том, что сам код неверен. Исключение перехватывается, но отладчик, похоже, игнорирует этот факт.

Проблема описана здесь:

К сожалению, вы ничего не можете сделать, чтобы избежать этой ошибки. Было бы неплохо, если бы команда Patterns & Practices стала более итеративной в решении этой проблемы;).

Удачного кодирования!

7 голосов
/ 26 июля 2012

Кажется, что исключение выдается внутренне блоком Enterprise Library Unity, однако оно также обрабатывается. Это заставило меня вытащить слух, пока я не понял, что у меня был разрыв, когда исключение включено, выброшено для исключения CLR.

Отладка -> Исключение

Снятие отметки остановило отладчик от сбоя при возникновении исключения.

0 голосов
/ 01 октября 2016

Я столкнулся с этим при добавлении функции в старую программу, которая использует EntLib.Отключение исключения отладчика ощущалось как взлом.В VS 2015, Инструменты |Варианты |Отладка |Опции «Включить мой код» работали для меня.

0 голосов
/ 21 февраля 2011

Я получаю ту же ошибку при попытке создать базу данных в службе WCF.(Entlib 5.0, .net 4.0)

Database db = DatabaseFactory.CreateDatabase();

Мы обошли это, используя вместо этого объект SqlDatabase.Возможно, база данных устарела, поэтому сначала я проверю ваш код и убедитесь, что то, что вы пытаетесь сделать, все еще поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...