2009-05-20 8 views
0

.NET Webサービス(VB.NET)を作成しています。 DisplayChild()メソッドの1つは、Child型のオブジェクトを返します。子クラスがSOAPドキュメント(ASMX Webサービス)の継承プロパティを表示しない

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

とBaseClassのはようになります:子が定義されているDisplayChild()の出力に示されている唯一のプロパティからの復帰を示しSOAP定義で、

<Serializable()> _ 
Public MustInherit Class BaseClass 

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

しかしNotInInheritedPropertiesですプロパティ。私の質問では、どのようにBaseClassのプロパティをSOAPドキュメントに表示するのですか?もともと私は、問題であると思っているBaseClassのSerializable属性を持っていませんでした。しかし、それを変更した後でさえ、それはまだ動作しませんでした。

+0

私はもうこの質問を別の場所に投稿してしまい、数週間後に答えを見つけました:http://stackoverflow.com/questions/1875642/inherited-properties-do-not-appear-in-soap-sample-on- asmx-file – Grinn

答えて

1

Webブラウザ経由でサービスを表示するときにBasePropertyがSOAP定義に表示されない場合でも、それはまだWSDLの一部であるように見えます。あなたが持っている場合は

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

:あなたはWSDL(?YourService.asmxの「サービスの説明」と言うYourService.asmx WSDL、またはそのリンク)を確認した場合、あなたは、のようなものをBaseClassのと子の間の継承が表示されますそのプロパティを見ることができないWebサービスのコンシューマであれば、特定の実装で問題になる可能性があります(複雑なタイプを返すWebサービスでは完全に閉鎖された「Webサービス対応」エンタープライズアプリケーションで作業しました)

+0

はい、プロパティはWSDLで使用できます。私はその言葉を聞いたことがあるが、決して読むことはなかった。 Web参照があり、WSDLを参照してオブジェクトブラウザに表示される情報を取得しているときには、Web参照が更新されていると思います。それがどのように働いたのか常に疑問に思った。 –