在我们的项目中,我们使用 Enterprise library 5.0 进行异常处理。现在,我们计划使用 Enterprise library 6.0,但我们面临 EnterpriseLibraryContainer.Current 在 Enterprise library 6.0 中不可用的问题。
我发现这个链接 Fluent API 只生效一次(企业库) ,它提到了用于 6.0 的 LogWriter 迁移。我想为 ExceptionHandling 做同样的事情。下面是与我们的项目类似的示例代码。
EHConfigMgr.cs
var builder = new ConfigurationSourceBuilder();
var exceptionHandlingBuilder = builder.ConfigureExceptionHandling();
ServiceLocator.Current.GetAllInstances<IExceptionHandlingConfigurator>().ToList().ForEach(c => c.ConfigureExceptinHandling(exceptionHandlingBuilder));
exceptionHandlingBuilder.GivenPolicyWithName("WCF Exception Shielding")
.ForExceptionType<FaultException<ValidationFault>>()
.HandleCustom<WcfRethrowValidationFaultHandler>()
.ThenThrowNewException();
var tempAppConfigPath = Path.GetTempFileName();
File.Copy(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, tempAppConfigPath, true);
File.SetAttributes(tempAppConfigPath, FileAttributes.Normal);
var configSource = new FileConfigurationSource(tempAppConfigPath, false);
var s = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
Proxybase.cs
protected ProxyBase()
{
ExceptionManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
}
请帮助我在不影响现有功能的情况下更改代理库。