这是一个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;
答案 0 :(得分:0)
我已经错误地宣布了这个属性。应该是
静态字符串ThisResponse;
公共静态字符串GlobalResponse {
}
然后我像这样引用它......
txtResponse.Text = MyMessageInspector.GlobalResponse;
格雷格