1

同じメッセージ コントラクトを持つ 2 つの操作 (Operation1 と Operation2) を持つ WCF サービスがあります。Wsdl (Get/Http) にアクセスすると、次のエラーが発生します。


System.InvalidOperationException: WSDL エクスポート拡張機能の呼び出しで例外がスローされました: System.ServiceModel.Description.DataContractSerializerOperationBehavior

コントラクト: Xxxxx ----> System.InvalidOperationException: Xxxx.IServiceInterface.Operation1 操作は、Xxxx から既にエクスポートされているメッセージ要素 [http://schemas.somecompany.com/namespace/version/:MessageContract] を参照しています。 IServiceInterface.Operation2 操作。

メソッド名を変更するか、OperationContractAttribute の Name プロパティを使用して、いずれかの操作の名前を変更できます。または、MessageContract プログラミング モデルを使用して、要素名をより詳細に制御できます。


異なるサービス操作に同じメッセージを再利用できるように思えます。エラーに示されている解決策は理解していますが、さまざまな操作に対して同じメッセージを表示したいと考えています。

考え?

詳細: イベント pub/sub メカニズムを実装しています。イベント サブスクライバーは、処理するイベントの種類でサービス操作を宣言し、それを汎用メッセージ コントラクト クラスにラップします。この汎用メッセージ クラスは、メッセージ コード属性を使用して、単一のメッセージ構造である event-publisher xml 名を使用します。すべてのイベント サブスクライバーは UDDI に登録され、pub/sub メカニズムはこれらのエンドポイントを使用してイベントをサブスクライバーにプッシュします。UDDI でのサービス操作の登録では、特定のイベント名前空間を検出して、それらのサービス操作をイベント ハンドラーとして登録します (req/response 操作ではありません)。

4

1 に答える 1

0

このエラーは、operation1をコピーして貼り付けてから、名前をoperation2に変更したが、新しい名前と一致するようにDataContract属性を変更しなかった場合に発生する可能性があります。

于 2011-03-17T15:20:34.903 に答える