Дочерний класс не показывает унаследованные свойства в документе SOAP (веб-сервис ASMX) - PullRequest
0 голосов
/ 20 мая 2009

Я пишу .NET веб-сервис (VB.NET). Один из методов DisplayChild () возвращает объект типа Child. Ребенок определен:

<Serializable()> _
Public Class Child
    Inherits BaseClass
    Property NotInInheritedProperties() as Object
    ...
    End Property
End Class

и BaseClass выглядит примерно так:

<Serializable()> _
Public MustInherit Class BaseClass

    Property BaseProperty() as Object
    ...
    End Property
End Class

Однако в определении SOAP, которое показывает возврат из DisplayChild (), единственным свойством, показанным в выходных данных, является свойство NotInInheritedProperties. Тогда мой вопрос: как мне заставить свойства в BaseClass отображаться в документе SOAP? Изначально у меня не было атрибута Serializable в BaseClass, и я подумал, что это проблема. Однако даже после изменения это все равно не сработало.

1 Ответ

1 голос
/ 21 мая 2009

Даже если BaseProperty не отображается в определении SOAP при просмотре службы через веб-браузер, похоже, что она все еще является частью WSDL. Если вы просматриваете WSDL (YourService.asmx? WSDL или ту ссылку, которая говорит «Описание службы» на YourService.asmx), вы должны увидеть наследование между BaseClass и Child, что-то вроде:

<s:complexType name="Child">
  <s:complexContent mixed="false">
    <s:extension base="tns:BaseClass">
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="NotInInheritedProperties" />
      </s:sequence>
    </s:extension>
  </s:complexContent>
</s:complexType>
<s:complexType name="BaseClass" abstract="true">
  <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="BaseProperty" />
  </s:sequence>
</s:complexType>

Если у вас есть потребитель вашего веб-сервиса, который не может видеть это свойство, то это может быть проблемой с его конкретной реализацией (я работал с некоторыми корпоративными приложениями с «веб-сервисом», которые просто задыхались от веб-сервисов) которые возвращают сложные типы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...