WCFサービスに操作(メソッド)があります。操作にはJsonコンテンツのパラメータがあります。このパラメータAuditLineUpdatedModelについてメッセージコンテンツに基づいて異なる操作にWCFサービス呼び出しをリダイレクトする方法
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
string NotifyAuditLineUpdated(AuditLineUpdatedModel notification);
、Iは、デシリアライゼーションの際にオブジェクトにJSONメッセージをマッピングするDataContractAttributesとDataMemberAttributesを用いて予備definiedクラスを作成しています。
しかし、私はこの問題は、クライアントが、私は、単一のクラス内のすべてのケースを組み合わせることはできません異なるJSONメッセージ構造下の同じフィールド名を有することである持っています。換言すれば、Jsonメッセージは、の異なる構造(値ではない)を有するフィールドを有する。;したがって、私はを別の操作に呼び出すことを試みています。これはJsonメッセージの多様性を満たすことができます。
これまでのところ、私はWCFがサービスレベルでルーティングを提供することを発見しました。オペレーションレベルでコールをルーティングできるかどうか疑問に思う。言い換えれば、私は異なるパラメータ型の2つの操作を持つ単一のサービスを持っています。コールを捕捉してメッセージの内容を確認し、そのメッセージに基づいて適切な操作にコールを誘導することは可能ですか?
あなたの情報をお試しください。WCFのIDispatchMessageInspector(メッセージインスペクタ機能)。メッセージの内容を確認できましたが、宛先(To URI)アドレスをリダイレクトまたは変更できません。 注:さらに、クライアントサービスは2つの異なるケースに対して異なるuri要求を送信することはできません。
- 「宛先をリダイレクトまたは変更することはできません。」 - 理由を教えてください。新しいメッセージタイプを処理する別のサービスがある場合は、そのサービス用の新しいサービスクライアントを作成し、新しいサービスを使用してメッセージを処理し、その結果を元のサービスに返すことができるはずです。 –
こんにちは@KosalaW、次の行を実行しようとすると、エラーrequest.Headers.Add(MessageHeader.CreateHeader( "To"、 "To"、))が表示されます。 エラーメッセージ:封筒のバージョン 'EnvelopeNone(schemas.microsoft.com/ws/2005/05/envelope/none)';メッセージヘッダーの追加をサポートしていません –
下記の私の答えを参照してください。さらに質問がある場合はお知らせください。新しいサービスのヘッダーを追加する必要はありません。あなたは体だけが必要です。 –