Frage

Mit der folgenden Webservice-Definition aClientArgs als komplexer Typ mit:

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

Dann aClientArgs als Unterklasse definieren:

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

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

Gibt das folgende WSDL-Fragment für die save_client argumente:

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

Wenn ich erwarte die folgende:

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

So scheint es, dass die .NET WebService nicht die Behandlung von vererbten Eigenschaften als Argumente / Variablen für die Zwecke eines Webdienstes. Wie komme ich .NET auch die Eigenschaften der Basisklasse zu verwenden?

War es hilfreich?

Lösung

Wie haben Sie fest, dass die WSDL falsch ist? Haben Sie in den Dienst finden und den Link für die save_client Methode klicken?

Das ist nur eine Hilfeseite. In diesem Fall ist es falsch. Klicken Sie auf den Link für die Service-Beschreibung, und ich denke, Sie sehen dann folgende Informationen:

  <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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top