The message with Action 'http://MyWebService/IWebService/HelloWorld' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None). [ServiceContract(Namespace = "http://MyWebService", SessionMode = SessionMode.Required, CallbackContract = typeof(ISiteServiceExternal))] public interface IWebService { [OperationContract] void Register(long customerID); } public interface ISiteServiceExternal { [OperationContract] string HelloWorld(); } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] class WebService : IWebService { void IWebService.Register(long customerID) { Console.WriteLine("customer {0} registering", customerID); var callbackService = OperationContext.Current.GetCallbackChannel(); RegisterClient(customerID, callbackService); Console.WriteLine("customer {0} registered", customerID); } } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, Namespace="http://MyWebService")] class SiteServer : IWebServiceCallback { string IWebServiceCallback.HelloWorld() { return "Hello World!"; } ... } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] class WebService : IWebService { ... } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, Namespace="http://MyWebService")] class SiteServer : IWebServiceCallback { ... }