Подтвердить что ты не робот

Как использовать корпоративную библиотеку Exception Manager 6.0

При использовании Enterprise Library 6.0 эта ошибка возникает в коде ниже:

bool rethrow = ExceptionPolicy.HandleException(ex, "ReplacePolicy1")

"Должен установить ExceptionManager в классе ExceptionPolicy с помощью метода SetExceptionManager."

В Enterprise Library 5.0 этот код работал:

public static bool HandleException(Exception exception, string PolicyName)
{
    ExceptionManager exManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
    ExceptionPolicy.SetExceptionManager(exManager);
    bool rethrow = ExceptionPolicy.HandleException(ex, "ReplacePolicy1");
    return reThrow;
}

Но в Enterprise Library 6.0 класс EnterpriseLibraryContainer не найден. Я хочу получить экземпляр ExceptionManager. Как решить эту проблему?

4b9b3361

Ответ 1

EnterpriseLibraryContainer был удален для выпуска Enterprise Library 6. Существует новый подход к загрузке блоков приложений в Enterprise Library 6. Если вы хотите получить экземпляр ExceptionManager, вы можете использовать factory:

IConfigurationSource config = ConfigurationSourceFactory.Create();
ExceptionPolicyFactory factory = new ExceptionPolicyFactory(config);

ExceptionManager exManager = factory.CreateManager();

Чтобы настроить блоки для использования статических фасадов, вы можете использовать метод SetExceptionManager и поставлять ExceptionManager сверху:

ExceptionPolicy.SetExceptionManager(factory.CreateManager());

Это нужно сделать только один раз при запуске приложения.

Ответ 2

Я также столкнулся с этой проблемой, и теперь я решил это. Таким образом, вы также можете попробовать установить следующий код в Application_Start() в файле Global.asax:

IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
DatabaseFactory.SetDatabaseProviderFactory(new DatabaseProviderFactory());
if (configurationSource.GetSection(LoggingSettings.SectionName) != null)
Logger.SetLogWriter(new LogWriterFactory(configurationSource).Create());
ExceptionPolicy.SetExceptionManager(new ExceptionPolicyFactory(configurationSource).CreateManager());