Как использовать корпоративную библиотеку 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.
Как решить эту проблему?
Ответы
Ответ 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());