1. 程式人生 > 其它 >在使用 .NET Remoting 技術開發跨程序通訊時找不到請求的服務

在使用 .NET Remoting 技術開發跨程序通訊時找不到請求的服務

System.Runtime.Remoting.RemotingException:“找不到請求的服務”

當出現此異常時,可能的原因有三個:

  1. 要查詢的遠端物件尚未建立;
  2. 要查詢的遠端物件已被回收;
  3. 沒有使用匹配的方法建立和訪問物件

第一種情況:就是當你試圖跨程序訪問某物件的時候,此物件還沒有建立。你需要做的,是控制好物件建立的時機,建立物件的程序需要比訪問它的程序更早完成物件的建立和封送。也就是下面的程式碼需要先呼叫。

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