KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
While updating a service reference of my WCF client (simply by clicking Update Service Reference in Visual Studio 2008), following error occurs: System.ServiceModel.FaultException: The message with Action ' http://schemas.xmlsoap.org/ws/2004/09/transfer/Get ' 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). at System.ServiceModel.Dispatcher.ErrorBehavior.ThrowAndCatch(Exception e, Message message) Background: I've created ErrorServiceBehaviour class. Because such a behavior is created for error handling, IErrorHandler implementation must be applied to each ChannelDispatcher . public class ErrorServiceBehaviour : Attribute, IServiceBehavior { ... public Type FaultType { get { return _faultType; } set { _faultType = value; } } public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers) { dispatcher.ErrorHandlers.Add(new ErrorHandler(_faultType)); } } } public class ErrorHandler : IErrorHandler { public ErrorHandler(Type faultType) { _faultType = faultType; } ... } Later, I've used that behaviour by applying ErrorServiceBehavior attribute to my service class: [ErrorServiceBehavior(FaultType = typeof(MyServiceFault))
Tags (comma-separated)
Save Edits
Cancel