在WCF中,是否可以添加全局消息检查器?

时间:2013-03-21 22:05:16

标签: wcf global behavior

有很多关于全局错误处理程序的问题,但这些都没有解决我需要的问题。

有没有办法通过.config添加将附加到每个端点或服务的行为?

*特别是我想要做的是添加一个记录器,它将捕获并记录每个SOAP请求/响应。但我希望将这种行为自动添加到我拥有的每项服务中,而不必手动将其添加到每个服务中。

我查看了行为扩展并认为这将是解决方案,但不是,您必须将行为添加到每个服务。*

2 个答案:

答案 0 :(得分:1)

您可以使用 machine.config 文件的<commonBehaviors>部分来定义将应用于计算机中所有服务的行为。请注意,更新machine.config实际上就像使用bazooka来解决您的问题(在许多情况下,组策略可能禁止您这样做),因此它可能不适用于所有方案。您还需要确保已注册行为扩展(也在machine.config中),并且您使用WCF的任何应用程序都可以访问扩展中引用的程序集(可能通过GAC)。

另一种替代方法是使用公共库来创建服务主机(直接用于自托管服务或通过服务主机工厂用于webhosted服务),并使用该库(这将反过来添加检查器)。

答案 1 :(得分:1)

让消息检查员摆脱这种问题总是好的。 Message Inspector是WCF扩展的一种实现,可以很好地跟踪服务的每个传入请求和传出响应,即使它在消息验证中失败,它也可以选择陷阱和相应的工作。更准确地说,消息检查器可以使用配置文件进行配置,而无需在现有服务中进行更改。

有关您的消息检查器及其实现的更多详细信息,请参见Here

希望这会有所帮助!!

快乐编码:)