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のインスタンスを取得したい。この問題を解決するにはどうすればよいですか?
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回だけ実行する必要があります。
私もこの問題に直面しました、そして今私はこれを解決しました。したがって、_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());
_
ブール変数で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;
}