在使用 .NET Remoting 技術開發跨程序通訊時找不到請求的服務
阿新 • • 發佈:2021-06-30
System.Runtime.Remoting.RemotingException:“找不到請求的服務”
當出現此異常時,可能的原因有三個:
- 要查詢的遠端物件尚未建立;
- 要查詢的遠端物件已被回收;
- 沒有使用匹配的方法建立和訪問物件
第一種情況:就是當你試圖跨程序訪問某物件的時候,此物件還沒有建立。你需要做的,是控制好物件建立的時機,建立物件的程序需要比訪問它的程序更早完成物件的建立和封送。也就是下面的程式碼需要先呼叫。
RemotingServices.Marshal(MarshalByRefObject, typeof(TObject).Name);
第二種情況:你可能需要手動處理好封送物件的生命週期。重寫InitializeLifetimeService
null
是一個很偷懶卻有效的方法。
namespace testRemote { public abstract class MyRemoteObject : MarshalByRefObject { public sealed override object InitializeLifetimeService() => null; } }
第三種情況:你需要檢查你是如何註冊 .NET Remoting 通道的,建立和訪問方式必須匹配。
資料參考:
https://www.icode9.com/content-3-529350.html#_39