2011-01-24 70 views
4

我正在写一个自定义的WCF绑定,我只想在处理消息时出现问题时才运行一些代码。我的想法是添加一个自定义的IOperationInvoker,并使用try/catch来处理消息。我找不到在绑定中添加自定义行为的方法。我想避免为任何想要使用此绑定的服务声明BOTH绑定和行为。我可以从我的自定义绑定中添加自定义的WCF行为吗?

我正在运行的模型是Net.Msmq绑定,您可以在其中声明通过绑定进行的重试处理。这基本上是我想要复制的,但是通过我自己的绑定。

任何WCF的大师在那里?

回答

1

我认为这是不可能的。绑定不能添加行为。您可以检查默认的WCF绑定 - 例如WebHttpBinding总是与WebHttpBehaviorWebScriptEnablingBehavior一起使用,但WebHttpBinding无法添加它们,您必须手动添加它们。为了解决这个不便,WCF提供WebServiceHost类,可以用来代替普通的ServiceHost。 WebServiceHost为REST服务进行所有必需的配置 - 它添加了WebHttpBehavior并使用WebHttpBinding进行了开发。你可以使用相同的方法。

但我认为这不是一个好方法。重试处理已经由ReliableSession处理,并作为通道实现,因此您应该尝试相同的方式。在这种情况下,你不需要处理行为问题。

相关问题