1. 程式人生 > >關於【物件“***.rem”已經斷開連線或不在伺服器上】異常的解決方法

關於【物件“***.rem”已經斷開連線或不在伺服器上】異常的解決方法

     假設,Remoting服務端接受並儲存了一個Remoting客戶端註冊的回撥介面(比如ICallback),在一定的時刻,服務端會通過ICallback介面呼叫客戶端的某些方法。當執行一段時間後,服務端再次回撥ICallback時,就丟擲了類似下面的異常:
      物件“/9ca38d87_7f53_49b7_8c81_f2d499239f27/jqgpmhyy_rwcmicplf3j8s0j_1.rem”已經斷開連線或不在伺服器上。
      
原因在於回撥介面指向的服務物件已經被釋放,解決方案很簡單,只要設定服務物件的生命週期就可以了:                       publicclassCallback MarshalByRefObjectICallback
    {
        
publicoverrideobject InitializeLifetimeService()
        {
            
//Remoting物件 無限生存期
returnnull;
    
    }    }      如此可以保證客戶端的Callback物件在應用程式的整個生命週期內都是啟用的狀態,服務端可以隨時回撥它。