0

私はhttp://blogs.msdn.com/b/donsmith/archive/2006/10/06/handcrafting-wcf_2d00_friendly-wsdls.aspxのガイダンスに従って、WCF svcutil が信じる WSDL を作成しようとしました。ドキュメント/リテラル​​のラップ形式。その際、svcutil は、データ コントラクト シリアライザーを使用するサービス インターフェイスとプロキシ コードを C# で生成し、ラッパー操作で OperationContractAttributes を生成する必要があります。代わりに、BlahResponse クラスにネストされた BlahResponse1 クラスで奇妙な二重ラップが発生し、svcutil は WSDL がラップされておらず、OperationContract ではなく MessageContract を作成することを通知します。

サービス利用者がコードを読みやすくするために、BlahResponse1 クラスを取り除き、WSDL がラップされていることを svcutil に納得させたいと考えています。どうやってそれを行うのですか?多分また、どうやってそれをしないのですか?

データ コントラクトになるスキーマのすべての要素ではなく一部の要素に nillable="true" を設定するという提案を見てきました。どちらが nillable であるべきで、その理由は? nillable="true" の設定が悪い場合、nillable ではない要素が必要になることはありますか?

上記のリンクが示唆するように、スキーマを 2 つの名前空間に分割しようとしましたが、うまくいかないようでした (または、別の問題によってマスクされていました)。スキーマの名前空間、インポートとインクルード、および宣言の順序について重要なことはありますか?

スキーマ/WSDL を含めますが、これらは一種の独自仕様です。また、非常に大きく、多くのファイルに分散しています。

4

1 に答える 1

1

XMLSpy は、"parameter" というデフォルト名でメッセージ パーツを作成します。これは、.NET svcutil.exe がデータ コントラクトと操作コントラクトを自動生成するために必要なもののほとんどです。Svcutil.exe では、すべてのメッセージ部分に「パラメーター」という名前を付ける必要があります (末尾に「s」が追加されていることに注意してください)。

于 2012-06-30T19:38:08.517 に答える