1

这是一个带有接收 SOAP 信封的服务参考的 Visual Studio 2010 C# 应用程序。该应用程序运行良好,并且已经在自动化过程中每晚运行了几个月,以从服务中提取数据并将其写入数据库。因为它在夜间运行并且是自动化的,所以 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 为空。

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

1 回答 1

0

我错误地声明了财产。应该是

静态字符串 ThisResponse;

公共静态字符串 GlobalResponse {

}

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

txtResponse.Text = MyMessageInspector.GlobalResponse;

格雷格

于 2013-06-14T19:02:46.497 回答