The answer to Issue 7 is the following:
<wsdl:binding name="CalculatorSoap" type="tns:CalculatorPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<soap:body parts="AddRequest" use="literal"/>
<soap:body parts="AddResponse" use="literal"/>
Please note that the soap binding is rpc-literal and not document/literal.
Here is the explanation why:
Because the provided WSDL messages AddRequestMsg and AddResponseMsg are referenced as types (instead as elements), only rpc bindings are possible.
<wsdl:part name="AddRequest" type="tns:AddRequestType" />
<wsdl:part name="AddResponse" type="tns:AddResponseType" />
But let’s look at the corresponding WS-I BP 1.0 rules:
R2203 An rpc-literal binding in a DESCRIPTION MUST refer, in its soapbind:body element(s), only to wsdl:part element(s) that have been defined using the type attribute.
R2204 A document-literal binding in a DESCRIPTION MUST refer, in each of its soapbind:body element(s), only to wsdl:part element(s) that have been defined using the element attribute.
Because the provided messages use the type attribute to define their parts, we have to define an rpc-literal binding to be compliant with the WS-I BP 1.0.
This leads me straight to Issue 8 – Dealing with rpc-literal in a.NET environment.