سؤال

باستخدام تعريف WebService التالي باستخدام 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;
}

إرجاع جزء WSDL التالي ل Save_Client Args:

<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>

لذلك يبدو أن Webservice .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