Pregunta

Uso de la siguiente definición de servicio web utilizando aClientArgs como un tipo complejo:

[System.Web.Script.Services.ScriptService]
public class Controller : System.Web.Services.WebService {
    [WebMethod]
    public void save_client(aClientArgs client)
    {
           // Save client data
    }
}

A continuación, la definición de aClientArgs como una sub-clase:

public class aArgs 
{
    public string id = null;
    public string name = null;
}

public class aClientArgs : aArgs
{
    public string address = null;
    public string website = null;
}

Devuelve el siguiente fragmento de WSDL para el args save_client:

<save_client xmlns="http://tempuri.org/">
  <client>
    <address>string</address>
    <website>string</website>
  </client>
</save_client>

Cuando estoy esperando la siguiente:

<save_client xmlns="http://tempuri.org/">
  <client>
    <id>string</id>
    <name>string</name>
    <address>string</address>
    <website>string</website>
  </client>
</save_client>

Por lo tanto, parece que el servicio Web .NET no está tratando a las propiedades heredadas como argumentos / variables para los propósitos de un servicio web. ¿Cómo llego .NET utilizar también las propiedades de la clase base?

¿Fue útil?

Solución

¿Cómo determinó que el WSDL es malo? ¿Usted navega al servicio y haga clic en el enlace para el método save_client?

Eso es sólo una página de ayuda. En este caso, está mal. Haga clic en el enlace para obtener la descripción del servicio, y yo creo que veremos lo siguiente:

  <s:complexType name="aClientArgs">
    <s:complexContent mixed="false">
      <s:extension base="tns:aArgs">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Address" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Website" type="s:string" />
        </s:sequence>
      </s:extension>
    </s:complexContent>
  </s:complexType>
  <s:complexType name="aArgs">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string" />
      <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
    </s:sequence>
  </s:complexType>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top