문제

aclientargs를 복잡한 유형으로 사용하는 다음 웹 서비스 정의 사용 :

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

그런 다음 aclientargs를 하위 클래스로 정의합니다.

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

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

save_client args에 대한 다음 wsdl 조각을 반환합니다.

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

다음을 기대할 때 :

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

따라서 .NET 웹 서비스는 상속 된 속성을 웹 서비스 목적으로 인수/변수로 취급하지 않는 것으로 보입니다. 기본 클래스의 속성을 사용하도록 .NET을 얻으려면 어떻게해야합니까?

도움이 되었습니까?

해결책

WSDL이 잘못되었다고 어떻게 결정 했습니까? 서비스를 탐색하고 Save_Client 메소드의 링크를 클릭 했습니까?

그것은 단지 도움말 페이지입니다. 이 경우 잘못되었습니다. 서비스 설명을 보려면 링크를 클릭하면 다음이 표시됩니다.

  <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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top