【问题标题】:Add property to IClientMessageInspector将属性添加到 IClientMessageInspector
【发布时间】:2013-06-14 17:50:30
【问题描述】:

这是一个带有接收 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;

【问题讨论】:

  • 需要更多来自 ASP.NET 部分的代码,以了解如何将数据从控制台应用程序获取到 Web 应用程序。
  • Windows 应用不是 ASP.net。行“Console.WriteLine("SOAP 响应:{0}", reply.ToString());"获取信封到控制台窗口。 “这个响应=回复.ToString();”填充属性的私有成员。

标签: c# wcf soap wcf-client


【解决方案1】:

我错误地声明了该属性。应该是的

静态字符串 ThisResponse;

公共静态字符串 GlobalResponse {

}

然后我这样引用它...

txtResponse.Text = MyMessageInspector.GlobalResponse;

格雷格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多