0

在我们的项目中,我们使用 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>();
    }

请帮助我在不影响现有功能的情况下更改代理库。

4

0 回答 0