web-dev-qa-db-ja.com

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

ただし、Enterprise Library 6.0では、EnterpriseLibraryContainerクラスが見つかりません。 ExceptionManagerのインスタンスを取得したい。この問題を解決するにはどうすればよいですか?

14
Morteza Mousavi

EnterpriseLibraryContainerは、Enterprise Library 6のリリースで削除されました。EnterpriseLibrary6のアプリケーションブロックをブートストラップするための新しいアプローチがあります。ExceptionManagerのインスタンスを取得する場合は、次のファクトリを使用できます。

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

ExceptionManager exManager = factory.CreateManager();

静的ファサードを使用するようにブロックを構成するには、SetExceptionManagerメソッドを使用して、上からExceptionManagerを指定できます。

ExceptionPolicy.SetExceptionManager(factory.CreateManager());

これは、アプリケーションの起動時に1回だけ実行する必要があります。

19
Randy Levy

私もこの問題に直面しました、そして今私はこれを解決しました。したがって、_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());
_
3
Nimit Joshi

ブール変数で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;
}
0