웹 서비스 복합 유형 및 클래스 상속
-
19-09-2019 - |
문제
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>
제휴하지 않습니다 StackOverflow