如何使用Exception Manager Enterprise Library 6.0
使用Enterprise Library 6.0时,以下代码中会出现此错误:
bool rethrow = ExceptionPolicy.HandleException(ex, "ReplacePolicy1")
“必须使用SetExceptionManager方法在ExceptionPolicy类中设置ExceptionManager。”
在Enterprise Library 5.0中,此代码有效:
public static bool HandleException(Exception exception, string PolicyName) { ExceptionManager exManager = EnterpriseLibraryContainer.Current.GetInstance(); ExceptionPolicy.SetExceptionManager(exManager); bool rethrow = ExceptionPolicy.HandleException(ex, "ReplacePolicy1"); return reThrow; }
但是在Enterprise Library 6.0中找不到EnterpriseLibraryContainer类。 我想要获取ExceptionManager的实例。 我该如何解决这个问题?
EnterpriseLibraryContainer已被删除,用于Enterprise Library 6的发布。有一种新方法可以在Enterprise Library 6中引导应用程序块。如果要获取ExceptionManager
的实例,可以使用工厂:
IConfigurationSource config = ConfigurationSourceFactory.Create(); ExceptionPolicyFactory factory = new ExceptionPolicyFactory(config); ExceptionManager exManager = factory.CreateManager();
要配置块以使用静态外观,可以使用SetExceptionManager方法并从上面提供ExceptionManager:
ExceptionPolicy.SetExceptionManager(factory.CreateManager());
这只需要在应用程序启动时完成一次。
我也遇到过这个问题,现在我已经解决了这个问题。 因此,您还可以尝试在Global.asax
文件的Application_Start()
中设置以下代码:
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());