3

MSDNの例からメッセージをデバッグ ウィンドウに書き込む単純なメッセージ インスペクターを実装しようとしています。

public class MyMessageInspector : IDispatchMessageInspector
{
    public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        System.Diagnostics.Debug.WriteLine(request.ToString());
        return null;
    }

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        System.Diagnostics.Debug.WriteLine(reply.ToString());
    }
}

返信は予想通りの書き込みです。ただし、リクエストはnullのようです。何がうまくいかないのかについてのアイデアはありますか? コンソール アプリをクライアントとしてサービス参照プロキシを使用しています。

私はbasicHttpbindingを使用し、svcファイルを使用してIISでホスティングしています。Web メソッドのパラメーターは複合型です。それが違いを生むかどうかはわかりません。

4

2 に答える 2

1

まず、メッセージ リクエストの CreateBufferedCopy (クローン) を試してください: http://msdn.microsoft.com/en-us/library/ms734675.aspx (メッセージをバッファーにコピーする)。

詳細については、「メッセージ検査の部分について」を参照してください: http://binarymist.net/2010/06/14/message-inspection-in-wcf/

于 2011-01-03T23:09:32.160 に答える
0

MyMessageInspector クラスをコピーして貼り付け、動作を自分の Web サービスに追加しました。正常に動作します。Web サービスが呼び出されると、SOAP エンベロープが XML として出力されます。

プロジェクトに他の MessageInspector がありますか? もしそうなら、それらの1つが設定されている可能性がありますrequest = null- リクエストパラメータがref.

そうでない場合、リクエストが null であると言う理由は何ですか? Debug.WriteLine(..)ステートメントで NullReferenceException が発生していますか?

于 2011-01-24T04:47:50.080 に答える