WCF and interoperability
I was trying to create an endpoint using WCF that was to look almost identical to an existing endpoint hat was created using some java tools (we were creating a new .Net app and had to mimic some older endpoints).The endpoint seemed ok at first glance according to the WSDL so I generated a client from it using the SVCUTIL.EXE tool and was going to use the interface from that to base my new service off.
I performed the service generation and all looked initially ok. I thought I would regenerate the proxies based off my newly created service just to make sure everything looked right, but my newly generated proxies had no methods at all.
Now to cut a long story short, I found a post here that mentions an interoperability issue with WCF and Java based services. Apparently, some Java services can generate an entry in the WSDL that either contains a blank soapAction attribute or none at all.
<operation name="someOperation">
<soap:operation soapAction="">
...
</operation>
What this does though is cause SVCUTIL.EXE to generate a ServiceContract with an attribute like this:
System.ServiceModel.OperationContractAttribute(Ation = "", ReplyAction = "*")]
However, what it needs to be is something like this:
[System.ServiceModel.OperationContractAttribute()]
and then life will be good and you will get all your expected methods. So I simply took a copy of the generated interface code, and changed to suit. Since SVCUTIL.EXE is a client side tool, its not like i will be regenerating this all the time, I merely used it as a shortcut to get the interface in as quick a time as possible. This technical hiccup caused me to use more time than anticipated, but its a pretty easy fix.