Question

En utilisant la définition de Webservice suivante à l'aide aClientArgs comme un type complexe:

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

Ensuite, la définition aClientArgs comme une sous-classe:

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

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

Retourne le fragment WSDL suivant pour les save_client args:

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

Quand je me attends à ce qui suit:

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

Il semble donc que le WebService .NET ne traite pas les propriétés héritées comme arguments / variables à des fins d'un service Web. Comment puis-je obtenir .NET également d'utiliser les propriétés de la classe de base?

Était-ce utile?

La solution

Comment avez-vous déterminé que le WSDL est erroné? Est-ce que vous passez en revue au service et cliquez sur le lien pour la méthode save_client?

C'est juste une page d'aide. Dans ce cas, il est faux. Cliquez sur le lien pour la description du service, et je pense que vous verrez ce qui suit:

  <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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top