我可以从自定义绑定中添加自定义WCF行为吗?

时间:2011-01-24 20:27:53

标签: c# wcf

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

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

那里有任何一位WCF大师吗?

1 个答案:

答案 0 :(得分:1)

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

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