14

使用 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 的实例。我该如何解决这个问题?

4

3 回答 3

20

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());

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

于 2013-06-17T06:20:09.430 回答
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());
于 2017-04-03T10:01:19.963 回答
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;
}
于 2018-11-06T17:03:08.997 回答