0

I have a WCF service. A third party client sends SOAP 1.1 message to the service. I found out that the service can use basicHttpBinding to accept SOAP 1.1 messages so I configured my service to use basicHttpBinding. But the client gets an error message as below.

I am sure there is no contract mismatch so I am researching on whether there is binding/security mismatch between the client and the server. Also, I have tested my service from a test application by using basicHttpBinding and it works fine. I am not sure why it is giving the error when sending a SOAP 1.1 message from a third party client. I appreciate if anyone could point out what else I should be checking or any questions that I should check with the third party vendor? Thanks in advance.

Notes: The service does not use authentication. The third party is not .NET based client. I have only one OperationContract that can be consumed by the client. It is not decorated with any special attrubutes except [OperationContract]. Please let me know if you need any other information.

The message with Action '' 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)
Jyina
  • 2,530
  • 9
  • 42
  • 80
  • Can you edit your question to include these details (whether authentication is used, if the third party is .NET based or not, your contracts being passed)? – Channs Jun 13 '12 at 16:45
  • I added the details at the end of the question. Please let me know if I need to provide any other details. Thank you. – Jyina Jun 13 '12 at 17:28
  • 1
    I would suggest using a network inspection tool (like Fiddler) to compare the requests being sent by your test application and the 3rd party client. Or you could examine the requests manually too. I have a strong suspicion (since I have seen it earlier) that the 3rd part client isn't sending the SOAP request as expected by WCF. Hope this helps. – Channs Jun 13 '12 at 17:39
  • Thank you. I will compare the requests and see what is different. – Jyina Jun 13 '12 at 18:16

1 Answers1

1

I could not understand if you write the service or the client, but the problem is definetely either that the client does not send a SOAPAction HTTP Header, OR that the service uses soap11 but with some wsaddressing. In this case you should use custom binding and define the right addressing on the textBindingElmenet.

Yaron Naveh
  • 23,560
  • 32
  • 103
  • 158
  • I wrote only the service. The client is written by a third party. After reading your post, I looked at the header of the message that was sent by the client and it does not have a value in SoapAction. – Jyina Jun 13 '12 at 18:19
  • Content-Length 3069 Via 1.1 proxy-aaa.net.sss.com:8080 (squid) Accept-Encoding gzip Soapaction "" Connection keep-alive User-Agent Jakarta Commons-HttpClient/3.0.1 Host requestb.in Cache-Control max-age=259200 Content-Type text/xml; charset=utf-8 – Jyina Jun 13 '12 at 18:20
  • There is an element Soapaction but it does not have a value. Would that be a problem? Thank you. – Jyina Jun 13 '12 at 18:21
  • yes it would. you can build a wcf client and see what soap header it sends (you can also look for it in the wsdl but you need to understand the structure). this is exactly what can cause this error – Yaron Naveh Jun 13 '12 at 19:12
  • Well..I built a wcf client and turned on the tracing. The header in the trace message has "http://tempuri.org/ICustomer/AddCust". So I guess the third party client needs to do something to send the SoapAction like this. I am not sure if there is anything that I can do in my service so it will not require the client to send SoapAction. Thanks a lot for your comments. – Jyina Jun 13 '12 at 20:16
  • Soap action is required by Wcf and you cannot change it. Note that the working message contains the action inside the soap envelope and not only as http header. This may mean your client also need to put it in both places – Yaron Naveh Jun 13 '12 at 21:17