サービス内のすべてのデータ コントラクト オブジェクトは BaseMessage から継承しています...
[DataContract(Name = "BaseMessage", Namespace = "http://www..."]
public class BaseMessage
{
[DataMember]
public Guid MessageId { get; set; }
}
私は、メッセージ インスペクターを使用して、ネットワークを通過する実際の SOAP ペイロードを調べることに慣れています。ただし、私がやりたいことは、何らかの形でメッセージ パイプラインにフックして、次のことを行うことです。
着信メッセージを見て、理想的には文字列メッセージ オブジェクト全体で文字列一致を検索せずに MessageId フィールドを読み取ります (これを行うための高速な方法がない限り)。
MessageId を含むメッセージ内にヘッダーを作成する目的で、メッセージから MessageId を抽出します。繰り返しますが、文字列の一致についてメッセージ全体を検索したくありません。
私は IClientMessageInspector と IDispatchMessageInspector を使用してメッセージを確認することに慣れていますが、パイプラインのこの時点では、実際のオブジェクトにアクセスしてそのフィールドにアクセスすることはできないと思います。
ありがとう