当我调用 WCF 服务时如何触发事件(客户端)
我想在每次调用 WCF 服务时触发一个事件。
我尝试了以下操作:
var factory = new ChannelFactory<TService>(binding, endPointAdress);
factory.Credentials.UserName.UserName = username;
factory.Credentials.UserName.Password = password;
var proxy = factory.CreateChannel();
((IContextChannel)this.Proxy).Opened += new EventHandler(FactoryOpeningEventHandler);
this.Factory.Opened += new EventHandler(FactoryOpeningEventHandler);
上述问题是仅在打开代理时调用该事件,但我想在通过该代理进行调用时触发该事件,而不仅仅是在打开代理时触发该事件。我知道 IContextChannel 没有事件可以执行我想要的操作,因此我想要一个解决方法。
I'd like to fire an event every time I call a WCF service.
I've tried the following:
var factory = new ChannelFactory<TService>(binding, endPointAdress);
factory.Credentials.UserName.UserName = username;
factory.Credentials.UserName.Password = password;
var proxy = factory.CreateChannel();
((IContextChannel)this.Proxy).Opened += new EventHandler(FactoryOpeningEventHandler);
this.Factory.Opened += new EventHandler(FactoryOpeningEventHandler);
The problem with the above is that the event is only called when the proxy is opened, but I want to fire the event when a call is made trough this proxy, not only when it opens. I know there is no event for the IContextChannel that can do what I want, so I would like to have a workaround.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先创建一个实现 IDispatchMessageInspector(发送时)和 IClientMessageInspector(接收时)接口的检查器类。
获得检查员课程后,您必须通过行为注册它。
最后,您必须将该行为注册到您的服务描述中:
您可以在 http://msdn.microsoft.com/en-us/magazine/cc163302.aspx
You start by creating an inspector class that implement both
IDispatchMessageInspector
(when sending) andIClientMessageInspector
(when receiving) interfaces.After you have your inspector class, you have to register it through a behaviour.
Finally, you have to register that behaviour to your service description:
You can learn more about extending WCF at http://msdn.microsoft.com/en-us/magazine/cc163302.aspx