2012-04-29 23 views
14

WCFサービスを作成しましたが、サービスWSDLにクラス(複合型)が表示されません。以下は 複合型はwcf wsdlで使用できません

はサービスです。

[ServiceContract] 
public interface IFedexService 
{ 
    [OperationContract] 
    ShipmentReply CreateMultiFedExShipment(RxRdShipment shipment); 

    [OperationContract] 
    ShipmentReply CreateFedExShipment(RxRdShipment shipment); 
} 

そして、私のクラス定義は次のとおりです。

[DataContract] 
public class ShipmentReply 
{ 
    [DataMember] 
    public string ReferenceNumber { get; set; } 

    [DataMember] 
    public string MasterTrackingNumber { get; set; } 

    [DataMember] 
    public List<ReplyPackage> Packages { get; set; } 

    [DataMember] 
    public bool Response { get; set; } 

    [DataMember] 
    public RxNotification Notification { get; set; } 
} 

私の問題は、私はWSDLにこのShipmentReplyクラスを見つけられませんでしたです。私の問題は何ですか?

はい、それはWCFの通常のだ、 Arefin

答えて

28

、ありがとうございました。デフォルトでは、WCFはWSDL自体の操作だけを表示します。データ構造はWSDLファイルにリンクされているXSDファイルに記述されています。

私はあなたがあなたのWSDLを見れば、あなたはほとんどあなたのWSDLの上部にこれに類似した何かが表示されます賭けている

:これらは、必要なXSDファイルへのリンクです

<xsd:schema targetNamespace="http://tempuri.org/Imports"> 
    <xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd0" 
       namespace="http://tempuri.org/" /> 
    <xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd1" 
       namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
    <xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd2" 
       namespace="http://schemas.datacontract.org/2004/07/WCF_Simple_Service" /> 
</xsd:schema> 

- タイプにあなたのブラウザにURLがあり、そのうちの1つ(最も数字の高いものからそうである必要はありません)は、あなたの複合型定義を含みます。

(あなたが持っているものへのポートと実際のURLを適応させる)、ブラウザでこのURLを試してください。

http://localhost:8080/HelloIndigo?xsd=xsd2 

これはあなたの複合型

この機能のためのXSDは、いくつかの問題が発生しているあなたを与える必要がありますここ数年の間に、(100%正確で完璧な)構文を扱うことができないクライアントもいます。したがって、.NET 4.5では、WCFはすべてのXSD要素を含むWSDL全体を出力するための新しいパラメータ(...?singlewsdl)を持っています。詳細はWhat's new in WCF 4.5? A single WSDL fileを参照してください。

+0

ありがとうございます。あなたは私に一つのことを教えてもらえますか?datacontractではないクラスのプロパティを使うと、__BackingFieldを使用しなければなりません。あなたが知っている何か他の利点がありますか? –

+0

'[DataContract] &[DataMember] '属性 - あなたが必要とするあらゆる場所でそれらを使用してください!それが最も簡単で安全な方法です。他のものはハックです。 –

+1

ありがとうございます。 –

関連する問題