title: ASP.NET web services using reference parameters in webmethod
body: <p>I have an issue when I try to retrieve info through a webmethod. I am using a proxy to call a web service, in that proxy I have an operation which returns data using 'out' parameters. </p>
  
  <p>The server executes the operation succesfully, giving back the parameters properly instanced (I also have checked the soap return message using a traffic analyzer and is ok), but when I ask for those parameters to the proxy, I only obtain null values.</p>
  
  <p>Here is some code info:</p>
  
  <p>//This is the call to the web service using the proxy (t is the proxy and get_capabilities is the webmethod)</p>
  
  <pre><code>public trf_capabilities get_capabilities() {
              trf_capabilities trfcap = new trf_capabilities();                
              trfcap.protocol_list= t.get_capabilities(0, out trfcap.pause, out trfcap.maxfiles, out trfcap.maxsize, out trfcap.encrypt, out trfcap.authenticate, out trfcap.integritycheck, out  trfcap.hashtype, out  trfcap.multipath, out  trfcap.profile_list);            
              return trfcap;
          }
  </code></pre>
  
  <p>//This is the webMethod definition </p>
  
  <pre><code>[System.Web.Services.Protocols.SoapDocumentMethodAttribute("iTransfer-get_capabilities",/*RequestElementName="elementoVacio_",*/ RequestNamespace="", ResponseElementName="trf_capabilitiesPar", ResponseNamespace="", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
          [return: System.Xml.Serialization.XmlElementAttribute("protocol_list", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
          public protocolType[] get_capabilities([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] int vacio, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out bool pause, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out uint maxfiles, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out uint maxsize, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out bool encrypt, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out bool authenticate, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out bool integritycheck, [System.Xml.Serialization.XmlElementAttribute("hash_type", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out hash_typeType[] hash_type, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out bool multipath, [System.Xml.Serialization.XmlElementAttribute("profile_list", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out profile_listType[] profile_list) {
              object[] results = this.Invoke("get_capabilities", new object[] {
                          vacio});
              pause = ((bool)(results[1]));
              maxfiles = ((uint)(results[2]));
              maxsize = ((uint)(results[3]));
              encrypt = ((bool)(results[4]));
              authenticate = ((bool)(results[5]));
              integritycheck = ((bool)(results[6]));
              hash_type = ((hash_typeType[])(results[7]));
              multipath = ((bool)(results[8]));
              profile_list = ((profile_listType[])(results[9]));
              return ((protocolType[])(results[0]));
          }
  </code></pre>
  
  <p>As you can see, I am using the 'out' token in both call and handler method, but it seems is not enough to get the correct behaviour.</p>
  
  <p>And finally, here is the SOAP message intercepted with the traffic analyzer:</p>
  
  <pre><code>Content-Type: text/xml; charset=UTF-8
  Server: SOAPStandaloneServer
  Content-Length: 584
  Connection: close
  
  &lt;E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.w3.org/2001/XMLSchema"&gt;&lt;E:Body&gt;&lt;ns1:get_capabilitiesResponse xmlns:ns1=""&gt;&lt;ns1:pause&gt;true&lt;/ns1:pause&gt;&lt;ns1:maxfiles&gt;5&lt;/ns1:maxfiles&gt;&lt;ns1:maxsize&gt;0&lt;/ns1:maxsize&gt;&lt;ns1:encrypt&gt;true&lt;/ns1:encrypt&gt;&lt;ns1:authenticate&gt;true&lt;/ns1:authenticate&gt;&lt;ns1:integritycheck&gt;true&lt;/ns1:integritycheck&gt;&lt;ns1:multipath&gt;true&lt;/ns1:multipath&gt;&lt;/ns1:get_capabilitiesResponse&gt;&lt;/E:Body&gt;&lt;/E:Envelope&gt;
  </code></pre>
  
  <p>Any ideas?</p>