2013-03-21 60 views
3

关于全局错误处理程序等有一些问题,但没有一个解决我需要的问题。在WCF中可能添加全局消息检查器吗?

有什么办法可以通过.config添加一个将附加到每个端点或服务的行为吗?

*具体而言,我想要做的是添加一个记录器来捕获和记录每个SOAP请求/响应。但我宁愿将行为自动添加到我拥有的每个服务中,而不必手动将其添加到每个服务。

我看着行为扩展,并认为这将是解决办法,但没有,你要的行为添加到每个服务。*

+0

不同于论坛的网站,我们不使用的“谢谢”,或者“任何帮助表示赞赏”,或签名(因此)。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) – 2013-03-21 22:19:12

回答

1

您可以使用您的的machine.config<commonBehaviors>节文件来定义将应用于您的机器中所有服务的行为。注意更新machine.config实际上就像使用一个火箭筒来解决你的问题(在许多情况下,组策略可能会阻止你这么做),所以它可能不适用于所有场景。您还需要确保行为扩展已注册(也在machine.config中),并且您使用WCF的任何应用程序都可以访问扩展中引用的程序集(可能通过GAC)。

另一种替代方法是使用通用库来创建服务主机(直接用于自托管服务或通过服务主机工厂进行网站托管服务),然后使用该库(这样可以添加检查器) 。

+0

是的,去machine.config的方式似乎是矫枉过正的,我会看看服务主机工厂,谢谢! – aleciten 2013-03-22 15:21:09

1

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

更多关于你的消息检查及其各项实施细则,可以发现Here

希望这有助于!

编码快乐:)