I have a web service originally written to use soap.tcp transport in WSE2
that now uses http transport under WSE3. The WSE2 method looked like
[SoapDocumentMethod(ParameterStyle=SoapParameterSty le.Bare)]
[SoapMethod(someUri)]
public IndividualLookupResponse IndividualLookup( IndividualLookupRequest
request )
The WSE3 method looks like
[SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Bare)]
[WebMethod(MessageName = "IndividualLookup")]
public IndividualLookupResponse IndividualLookup(IndividualLookupRequest
request)
The response class contains a single property which is in turn an array of
other objects:
[Serializable]
[XmlRoot(ElementName="IndividualLookupResponse")]
public class IndividualLookupResponse
{
....
[XmlElement(ElementName="Individual", Type=typeof(IndividualLookupData))]
public IndividualLookupData[] Individual
{
get { ...
Under WSE2 the caller would do something along the lines of
IndividualLookupResponse response = proxy.IndividualLookup(request);
This fails now. Looking at the generated proxy, the WSE2 proxy contains:
[SoapMethod(someUri)]
public IndividualLookupResponse IndividualLookup( IndividualLookupRequest
request )
{
return (IndividualLookupResponse)base.SendRequestResponse (
"IndividualLookup", request).GetBodyObject(
typeof(IndividualLookupResponse),
SoapServiceAttribute.TargetNamespace);
}
The WSE proxy method looks like:
[Microsoft.Web.Services3.Messaging.SoapMethodAttrib ute(someUri)]
[return:
System.Xml.Serialization.XmlArrayAttribute("Indivi dualLookupResponse",
Namespace=someNamespace, IsNullable=true)]
[return: System.Xml.Serialization.XmlArrayItemAttribute("In dividual",
IsNullable=false)]
public IndividualLookupData[] IndividualLookup(IndividualLookupRequest
IndividualLookupRequest)
{
Microsoft.Web.Services3.SoapEnvelope results = base.SendRequestResponse(
"IndividualLookup", IndividualLookupRequest);
return ((IndividualLookupData[])(results.GetBodyObject(
typeof(IndividualLookupData[]),
this.SoapServiceAttribute.TargetNamespace)));
}
My question is, why is there no IndividualLookupResponse defined in the
proxy? It looks like the fact that the response contains a single property
causes it to be stripped and only the contents returned. Removing the
SoapParameterStyle.Bare attribute makes no difference in the output.