WCF 消息截获

来源:互联网 发布:古北水镇 知乎 编辑:程序博客网 时间:2024/05/16 07:22

WCF 框架中消息截获的方式

(1) svcutil.exe 生成代理类

 

public partial class SearchApplicationAdminWebServiceClient : System.ServiceModel.ClientBase<ISearchApplicationAdminWebService>, ISearchApplicationAdminWebService
{
   
    public SearchApplicationAdminWebServiceClient()
    {
            InspectorBehavior messageInspectorBehavior = base.ChannelFactory.Endpoint.Behaviors.Find<InspectorBehavior>();
            if (messageInspectorBehavior == null)
            {
                base.ChannelFactory.Endpoint.Behaviors.Add(new InspectorBehavior());
            }
     
    }

....

}

ClientBase封装了channel 所以在构造的时进行消息行为绑定,

 

 

public class MessageInspector : IClientMessageInspector, IDispatchMessageInspector

 

InspectorBehavior : IEndpointBehavior, IServiceBehavior, IOperationBehavior

 

(2) 利用channelFactory

 

 ChannelFactory<ISearchApplicationAdminWebService> channelFactory = new ChannelFactory<ISearchApplicationAdminWebService>("CustomBinding_ISearchApplicationAdminWebService");

        InspectorBehavior messageInspectorBehavior = channelFactory.Endpoint.Behaviors.Find<InspectorBehavior>();
            if (messageInspectorBehavior == null)
            {
                channelFactory.Endpoint.Behaviors.Add(new InspectorBehavior());
            }

            
            var server = channelFactory.CreateChannel();

原创粉丝点击