我是 WCF 的新手。我目前正在开发一个项目,我在此处发布的最后一个问题中进行了解释-->如何在 c# 中实现对另一台服务器的回调
我正在尝试用一个例子来研究回调。它使用控制台应用程序来托管服务,并使用 Windows 窗体来托管客户端。我必须使用控制台应用程序而不是 Windows 窗体运行我的服务器 B。当我单独运行该服务时,一切都很好。但是当我运行我的服务器 B(客户端)时,显示了一个错误:
“服务器没有提供有意义的回复;这可能是由于合同不匹配、会话过早关闭或内部服务器错误造成的。”
它在我的 serverB(client) 代码中指向此代码:
public void NotifySubscribe(string subscriberName)
{
SendOrPostCallback callback =
delegate (object state)
{
Console.WriteLine(String.Format("{0} has subscribe to service", state.ToString()));
Console.WriteLine(subscriberName);
Console.Read();
};
_uiSyncContext.Post(callback, subscriberName);
}
几乎从我的一个例子中模仿了一切。这是上面代码的原始代码:
public void NotifyGuestJoinedParty(string guestName)
{
// The UI thread won't be handling the callback, but it is the only one allowed to update the controls.
// So, we will dispatch the UI update back to the UI sync context.
SendOrPostCallback callback =
delegate (object state)
{ this.WritePartyLogMessage(String.Format("{0} has joined the party.", state.ToString())); };
_uiSyncContext.Post(callback, guestName);
}
private void WritePartyLogMessage(string message)
{
string format = this.txtPartyLog.Text.Length > 0 ? "{0}\r\n{1} {2}" : "{0}{1} {2}";
this.txtPartyLog.Text = String.Format(format, this.txtPartyLog.Text, DateTime.Now.ToShortTimeString(), message);
this.txtPartyLog.SelectionStart = this.txtPartyLog.Text.Length - 1;
this.txtPartyLog.ScrollToCaret();
}
因为我在我的项目中使用控制台应用程序,而不是将它放在文本框中,我使用 Console.writeline(); 编写它。我不知道它是否与代码中的委托(对象状态)有关。请回复。我不知道如何修复错误。谢谢你。