1
我已经完全为Silverlight应用程序使用双面消息解决方案。现在我想添加一个功能。当用户离开应用程序时,我想通过在退出前发送最后一条消息来通知服务器。在Silverlight应用程序中发送双面消息退出
我在应用程序退出事件期间尝试发送双工信息,但DuplexServiceClient
已处于CommunicationState.Faulted
状态。
我也尝试建立新的连接并发送消息。在客户端,一切似乎都没有问题,但根本没有发送任何消息。我使用Fiddler检查过两次。
App.Current.Exit += (s, e) =>
{
var dsc = new DuplexServiceClient(_binding, new EndpointAddress("../Services/MyService.svc"));
dsc.SendToServiceAsync(new UserLeave());
};
关键的是,我需要通知用户离开该应用后立即服务器,所以超时或类似的解决方法是不够好,我在这种情况下。
有没有人有工作解决方案?
也许与JavaScript和beforeunload事件的连接? – Silvermind 2012-03-16 10:18:26
我已经试过了。在window.onbeforeunload事件处理程序中调用JavaScript中的'ScriptableMember'方法。它的工作原理与我在Application Exit事件期间调用它完全相同。 – 2012-03-16 11:04:33
我在某处读到您的第二种方法不起作用,因为服务器必须处理由于客户端消失而无法完成的合同。你试过用新创建的wcfclient最后调用发送的方法是这样的:'[的ServiceContract] 接口IMyContract { [OperationContract的(IsOneWay =真)] 无效再见() }' – Silvermind 2012-03-16 19:24:39