在实现IDispatchMessageInspectors时,如何检查我的WCF服务是否与任何绑定一起工作

本文关键字:是否 服务 WCF 我的 任何 工作 一起 绑定 检查 IDispatchMessageInspectors 实现 | 更新日期: 2023-09-27 18:20:23

我正在使用一个具有多个端点的WCF服务。我已经实现了BehaviorExtensionElementIServiceBehaviorIDispatchMessageInspector中的方法,用于在处理每个请求之前检查消息头。我测试了它,它在wsHttpBinding上运行良好。

我想确保我的服务(因为它有消息检查器)是否能与NetTcpBindingNamedPipe和其他类型的绑定一起正常工作。我该怎么做?

在实现IDispatchMessageInspectors时,如何检查我的WCF服务是否与任何绑定一起工作

IDispatchMessageInspector用于在向操作发送请求消息之前或在向调用方返回回复消息之前检查或修改入站或出站应用程序消息。

消息检查器位于堆栈的更高层(在调度级别),因此端点使用的绑定无关紧要。

例如:

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
   foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
   {
         var cd = cdb as ChannelDispatcher;
         if (cd != null)
         {
            foreach (var ed in cd.Endpoints)
            {
               ed.DispatchRuntime.MessageInspectors.Add(new AuthorizationHeaderGetter());
               ed.DispatchRuntime.InstanceProvider = new UserTokenInjector(serviceDescription.ServiceType);
            }
         }
   }
}

上面的代码中没有提到绑定的"种类"(wsHttp或NetTcp)。

至于你的问题如何测试,我不确定你会测试什么。ApplyDispatchBehavior中没有可测试的内容(WCF框架除外)。您可以编写单元测试来测试IDispatchMessageInspector类。