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