public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { ServiceHost host = (ServiceHost)serviceHostBase; IFilterMapProvider provider = (IFilterMapProvider)host.SingletonInstance; foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers) { foreach (EndpointDispatcher endpointDispatcher in dispatcher.Endpoints) { var inspector = new MessageInspector(provider.ProvideFilterMap()); endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector); } } }
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { ServiceHost host = serviceHostBase as ServiceHost; if (host == null) { throw new NotSupportedException("ServiceHost derived host is required."); } IFilterMapProvider provider = host.SingletonInstance as IFilterMapProvider; if (provider == null) { throw new NotSupportedException( "Service must be configured in singleton mode and singleton instance must implement IFilterMapProvider interface."); } }