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();