我正在编写自定义WCF绑定,我想只在处理消息时遇到问题才运行一些代码。我的想法是添加一个自定义IOperationInvoker
并在处理消息时使用try / catch。我找不到从绑定中添加自定义行为的方法。我想避免为任何想要使用此绑定的服务声明BOTH绑定和行为。
我正在运行的模型是Net.Msmq绑定,您可以通过绑定声明重试处理。这基本上就是我想要复制的内容,但是通过我自己的绑定。
那里有任何一位WCF大师吗?
答案 0 :(得分:1)
我认为这是不可能的。绑定不能添加行为。您可以检查默认WCF绑定 - 例如WebHttpBinding
始终与WebHttpBehavior
或WebScriptEnablingBehavior
一起使用,但WebHttpBinding无法添加它们,您必须手动添加它们。为了解决这个不便,WCF提供WebServiceHost
类,可以使用它来代替普通的ServiceHost
。 WebServiceHost为REST服务提供了所有必需的配置 - 它添加了WebHttpBehavior并使用WebHttpBinding进行enpoint。您可以使用相同的方法。
但我认为这不是一个好方法。 ReliableSession已经处理了重试处理,并将其作为通道实现,因此您应该尝试相同的方式。在这种情况下,您不需要处理行为问题。