【发布时间】: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