如何使用Exception Manager Enterprise Library 6.0

时间:2013-06-16 07:42:45

标签: c# exception-handling enterprise-library

使用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<ExceptionManager>();
    ExceptionPolicy.SetExceptionManager(exManager);
    bool rethrow = ExceptionPolicy.HandleException(ex, "ReplacePolicy1");
    return reThrow;
}

但是在Enterprise Library 6.0中找不到EnterpriseLibraryContainer类。 我想要获取ExceptionManager的实例。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:19)

为企业库6的发布删除了 EnterpriseLibraryContainer。有一种新方法可以在Enterprise Library 6中引导应用程序块。如果您想获得ExceptionManager的实例,可以使用工厂:

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

ExceptionManager exManager = factory.CreateManager();

要配置块以使用静态外观,可以使用SetExceptionManager方法并从上面提供ExceptionManager:

ExceptionPolicy.SetExceptionManager(factory.CreateManager());

这只需要在应用程序启动时完成一次。

答案 1 :(得分:3)

我也遇到过这个问题,现在我已经解决了这个问题。因此,您还可以尝试在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());

答案 2 :(得分:0)

如果要在布尔变量中获取HandleException,则必须仅访问ExceptionManager。

exManager.HandleException(ex, "ReplacePolicy1");

这是示例示例:

public static bool HandleException(Exception exception, string PolicyName)
{
    IConfigurationSource config = ConfigurationSourceFactory.Create();
    ExceptionPolicyFactory factory = new ExceptionPolicyFactory(config);
    ExceptionManager exManager = factory.CreateManager();
    ExceptionPolicy.SetExceptionManager(factory.CreateManager());               
    bool rethrow  = exManager.HandleException(ex, "ReplacePolicy1");  
    return rethrow;
}