使用以下Web服务定义(使用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 WebService并未将继承的属性视为用于Web服务的自变量/变量。如何获得.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>
关于c# - Webservice复杂类型和类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2436811/