Могу ли я добавить пользовательские варианты поведения WCF из своего пользовательского Binding? - PullRequest
4 голосов
/ 24 января 2011

Я пишу пользовательскую привязку WCF и хочу запустить некоторый код, только если есть проблема при обработке сообщения. Моя мысль состоит в том, чтобы добавить пользовательский IOperationInvoker и использовать try / catch для обработки сообщения. Я не могу найти способ добавить пользовательское поведение из моей привязки. Я хотел бы избежать необходимости объявлять ОБА привязкой и поведением для любых служб, которые хотят использовать эту привязку.

Модель, от которой я работаю, - это привязка Net.Msmq, где вы можете объявить обработку повторных попыток через привязку. По сути, это то, что я пытаюсь воспроизвести, но с помощью моей собственной привязки.

Есть ли здесь гуру WCF?

1 Ответ

1 голос
/ 27 января 2011

Я думаю, что это невозможно. Привязка не может добавить поведение. Вы можете проверить привязки WCF по умолчанию - например, WebHttpBinding всегда используется вместе с WebHttpBehavior или WebScriptEnablingBehavior, но WebHttpBinding не может добавить их, вы должны добавить их вручную. Чтобы устранить это неудобство, WCF предлагает класс WebServiceHost, который можно использовать вместо обычного ServiceHost. WebServiceHost выполняет все необходимые настройки для службы REST - он добавляет WebHttpBehavior и enpoint с WebHttpBinding. Вы можете использовать тот же подход.

Но я думаю, что это не очень хороший подход. Обработка повторных попыток уже выполняется ReliableSession и реализована в виде канала, поэтому вам, вероятно, следует попробовать тот же путь. В таком случае вам не нужно иметь дело с проблемой поведения.

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