[英]WCF callback channel abort exception
我用WCF實現了發布者-訂閱者機制。
這就是我訂閱回調的方式:
public delegate void AsyncResponseEventHandler(AsyncResponse asyncResponse);
public static event AsyncResponseEventHandler AsyncResponseEvent;
public static IMyEvents Subscriber;
public void SubscribeEvent()
{
Subscriber = OperationContext.Current.GetCallbackChannel<IMyEvents>();
AsyncResponseEvent += new AsyncResponseEventHandler (Subscriber.AsyncResponseCallBack);
}
public static void RaiseAsyncResponse(AsyncResponse asyncResponse)
{
try
{
AsyncResponseEvent.Invoke(asyncResponse);
}
catch (Exception ex) {throw;}
}
這也是MySubscriber類代碼:
public class MySubscriber : IMyEvents
{
public void AsyncResponseCallBack(AsyncResponse asyncResponse)
{
AsyncResponseEventArgs e = new AsyncResponseEventArgs()
{
Response = asyncResponse
};
OnAsyncResponseReceived(this, e);
}
}
我使用RaiseAsyncResponse方法引發對客戶端的回調,
當服務主機是Windows服務並且我啟動服務並開始調試時,一切都第一次正常運行,但是當我停止客戶端應用程序並在不重新啟動Windows服務的情況下重新啟動調試時,我遇到了一個例外:通信對象, System.ServiceModel.Channels.ServiceChannel
不能用於通信,因為它已中止...
為什么回調通道被中止? 請幫我... :(
因為“但是當我停止客戶端應用程序時”才是答案。 停止客戶端應用程序后,System.ServiceModel很快就會釋放該通道上的保留。 如果您終止了服務或客戶端,則無法將數據從服務發送至客戶端,反之亦然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.