企业库6.0迁移

时间:2017-01-13 11:41:35

标签: enterprise-library-6

在我们的项目中,我们使用Enterprise library 5.0进行异常处理。现在,我们计划使用Enterprise Library 6.0,我们面临的问题是EnterpriseLibraryContainer.Current在Enterprise Library 6.0中不可用。

我找到了这个链接 Fluent API takes effect only once (Enterprise Library)  它提到了LogWriter 6.0的迁移。我想为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>();
    }

请帮助我更改代理库而不影响现有功能。

0 个答案:

没有答案