Тип ExceptionPolicyImpl имеет несколько конструкторов длины 2. Невозможно устранить неоднозначность. - PullRequest
1 голос
/ 18 января 2012

Я настроил службу WCF с помощью Enterprise Library 5 «Регистрация блока приложения», «Интеграция блока приложения проверки с WCF» и «Поставщик WCF блока обработки исключений» и настроил его, используя свободный API, например:

 builder.ConfigureExceptionHandling()
            // -----------------------------------------------------
            // Preventing Enterprise Library Validation Block exceptions from getting shielded.
            // -----------------------------------------------------
            .GivenPolicyWithName("WCF Exception Shielding")
            .ForExceptionType<FaultException<ValidationFault>>()
            .ThenDoNothing()

            // -----------------------------------------------------
            // Shielding unhandled exceptions
            // -----------------------------------------------------
            .ForExceptionType<Exception>()
            .LogToCategory("My Logging Category")
            .WithSeverity(TraceEventType.Critical)
            .ShieldExceptionForWcf(typeof(ServiceUnhandledFault), Resources.UnhandledException_ErrorMessage)
            .ThenThrowNewException();

Реализация услуги:

[ServiceContract]
[ValidationBehavior]
[ExceptionShielding("WCF Exception Shielding")]
public interface IMyService
{
    [OperationContract]
    [FaultContract(typeof(ValidationFault))]
    [FaultContract(typeof(ServiceUnhandledFault))]
    void InsertEntity(MyEntity file);
}

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]
public partial class MyService : IMyService { ...Implementation... }

Если я установлю для свойства «IncludeExceptionDetailInFaults» моего поведения отладки службы значение false и вызову операцию службы с объектом, который не будет корректно проверяться, в службе будет выдано следующее исключение:

Microsoft.Practices.Unity.ResolutionFailedException: сбой разрешения зависимости, type = "Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyImpl", name = "Экранирование исключений WCF". Исключение произошло во время: при разрешении. Исключение: InvalidOperationException - Тип ExceptionPolicyImpl имеет несколько конструкторов длины 2. Невозможно устранить неоднозначность.

Но если я установлю для параметра IncludeExceptionDetailInFaults значение true, клиенту будет возвращена ошибка проверки.

Кто-нибудь знает, что мне не хватает?

1 Ответ

0 голосов
/ 30 сентября 2012

Похоже, вы пытаетесь настроить Ent Lib с подходом Fluent API.У меня была похожая ошибка, когда я пытался настроить Ent Lib с ОБА конфигурационными файлами (web.config) и свободным API.Если да, вы можете попытаться удалить переменные файла конфигурации и сделать это только с помощью API.Я обнаружил, что это решило ошибку для меня.Дайте мне знать, как это происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...