将属性添加到IClientMessageInspector

时间:2013-06-14 17:50:30

标签: c# wcf soap wcf-client

这是一个Visual Studio 2010 C#应用程序,其中服务引用接收SOAP信封。该应用程序运行正常,并在自动化过程中每晚运行数月,以从服务中提取数据并将其写入数据库。因为它在夜间运行并且是自动化的,所以UI非常小。

我想在表单中添加一个文本框,以便我可以偶尔看到响应以进行调试。我偶尔会在日志中得到没有意义的东西。 MessageInspector类有一个AfterReceiveReply,它将响应输出到控制台窗口,这在开发过程中很好,但我想让它也输出到UI。我创建了一个公共财产,但我似乎无法得到正确填充的响应。

public class MyMessageInspector : IClientMessageInspector
    {
    private string ThisResponse;
    public string GlobalResponse
    {
        get
        {
            return ThisResponse;
        }
        set
        {
            ThisResponse = value;
        }
    }
    public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
    {
        Console.WriteLine("SOAP Response: {0}", reply.ToString());
        ThisResponse = reply.ToString();
    }

在表单中,我调用下面的内容,GlobalResponse为null。

MyMessageInspector Output = new MyMessageInspector();
txtResponse.Text = Output.GlobalResponse;

1 个答案:

答案 0 :(得分:0)

我已经错误地宣布了这个属性。应该是

静态字符串ThisResponse;

公共静态字符串GlobalResponse {

}

然后我像这样引用它......

txtResponse.Text = MyMessageInspector.GlobalResponse;

格雷格