How to name soap operation differently from the related requestDTO

I agree with you: I’d prefer to avoid to modify the wsdl.

I noticed the SS wsdl defines the DTOs (request and response) as following

<xs:complexType name="GetCountries">
<xs:sequence>
  <xs:element minOccurs="0" name="Ids" nillable="true" xmlns:q4="http://schemas.microsoft.com/2003/10/Serialization/Arrays" type="q4:ArrayOfint" />
</xs:sequence>
</xs:complexType>
<xs:element name="GetCountries" nillable="true" type="tns:GetCountries" />

having a dedicated empty node xs:element and a different xs:complexType node for the same DTO

I noticed in other wsdls (generated by other frameworks) the xs:complexType has been wrapped/included as child of the xs:element as following:

<xs:element name="GetCountries" nillable="true" type="tns:GetCountries">
	<xs:complexType name="GetCountries">
	<xs:sequence>
	  <xs:element minOccurs="0" name="Ids" nillable="true" xmlns:q4="http://schemas.microsoft.com/2003/10/Serialization/Arrays" type="q4:ArrayOfint" />
	</xs:sequence>
	</xs:complexType>
</xs:element>

using that wsdl(all other parts including port, message and binding are exactly the same as SS wsdl) the generated proxy class creates a dedicated type for the input parameter named “Request”

public GetCountriesResponse GetCountries(GetCountriesRequest GetCountries1){..}

that is exaclty what I’m looking for. Do you know if that DTO schema definition (having the xs:complex type wrapped in the releated xs:element) can be accomplished using same dedicated property of the System.Runtime.Serialization.DataContractAttribute or how can be done?