如何使用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());