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