When .Net 1.0 webservice (VS2003) generates a wsdl -
<wsdl:binding name="TestSoap" type="tns:TestSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/(note: style attribute present)
<wsdl:operation name="HelloWorld">
<soap:operation soapAction="http://tempuri.org/HelloWorld"
style="document" />
But when .Net 2.0 webservice (VS2005) generates a wsdl -
<wsdl:binding name="TestSoap" type="tns:TestSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" /(note:
style attribute missing)
<wsdl:operation name="HelloWorld">
<soap:operation soapAction="http://tempuri.org/HelloWorld"
style="document" />
so the new VS2005 webservice wsdl omits the style="document" attribute. The
style is however "document" by default.
The problem that this causes is - Java specifically requires the
style="document" when it consumes a .Net Webservice.
And we do not want our Java users to make any change on their side. All our
webservices are currently in VS2003 and want to convert to VS2005, but want
this change to be transparant to Java users.
I found that in .Net2.0 using SoapExtensionReflector you can intercept the
wsdl, the wsdl/servicedescription is accessible via a object model - a
ServiceDescription class and through one of it's collection which is the
BindingCollection (of the SoapExtension collection) you can set the style to
either "document" or "RPC"
When I set it to RPC it does add the style="RPC" attribute. But when I set
style to document it still omits the style="document"
NOTE: style is a enumerated type. here is my code below.
ServiceDescription myDescription =
ReflectionContext.ServiceDescription;
BindingCollection myBindingCollection = myDescription.Bindings;
SoapBinding sb =
(SoapBinding)myBindingCollection[0].Extensions[0];
sb.Style = SoapBindingStyle.Document; //does not add
style="document" attribute
sb.Style = SoapBindingStyle.Rpc; //does add style="rpc" attribute
Any clues ?? No, we don't want to manually create the wsdl. We want a
solution that will not break Java code. Other than the missing style
attribute the rest of the wsdl looks similar to the one created by VS2003.