【发布时间】:2015-08-17 13:00:56
【问题描述】:
我目前正在制作一个 WCF-WPF 应用程序,其中多个客户端可以连接到聊天室。除了最重要的部分,我几乎到了。每当我启动主机时,我都可以让一个客户端连接,并且接收和发送的每条消息都显示在客户端的 GUI 上。但是,每当我尝试与第二个客户端连接时,该客户端的程序就会崩溃并出现 System.ServiceModel.CommunicationObjectFaultedException。
我不知道我做错了什么,希望这里有经验的程序员可以帮助我。出去。
这是我的 WCF 服务:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service1 : IService1
{
private static Dictionary<string, IService1Callback> clients = new Dictionary<string, IService1Callback>();
public Service1()
{
}
public void SendMessage(Message m)
{
Console.WriteLine("Sent by: " + m.User);
Console.WriteLine(m.Content);
Console.WriteLine("");
foreach (var client in clients)
{
client.Value.SendMessageToClients(m);
}
}
public void RegisterClient()
{
IService1Callback callback = OperationContext.Current.GetCallbackChannel<IService1Callback>();
clients.Add("Client", callback);
}
}
我的客户端应用程序是一个 WPF 项目,其中包含一些已生成的组件。 xaml.cs 文件如下所示:
public partial class MainWindow : Window
{
Service1Client s;
public MainWindow()
{
InitializeComponent();
InstanceContext site = new InstanceContext(new CallbackHandler(txtAllMessages));
s = new Service1Client(site);
s.RegisterClient();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Message m = new Message();
m.Content = txtMessage.Text;
m.User = txtName.Text;
s.SendMessage(m);
}
public class CallbackHandler : IService1Callback
{
public TextBox txtValue { get; set; }
public CallbackHandler(TextBox tb)
{
this.txtValue = tb;
}
public void SendMessageToClients(Message m)
{
txtValue.Text += "Sent by: " + m.User + "\n";
txtValue.Text += m.Content + "\n\n";
}
}
}
如果有人能够帮助我解决这个问题,那就太棒了。非常感谢!
【问题讨论】:
-
异常中是否有消息可以提供一些线索?