0

リモートサーバーにシングルトンサービスがあります。これには、新しいオブジェクトをクライアントに返すメソッドがあります。

public class MySingleton : MarshalByRefObject
{
   public override object InitializeLifetimeService()
   {
      return null;
   }

   public MarshalByRefObject GetService()
   {
      return new Model();
   }
}

public class Model : MarshalByRefObject
{
}

モデル インスタンスをサーバー上で永久に存続させたくないので、通常のスポンサーシップ手順を使用したかっただけです。クライアント側でモデルのスポンサーを作成し、リモート リースをこのスポンサーにアタッチします。

var sponsor = new ClientSponsor();
_service = _mySingleton.GetService();
var success = sponsor.Register(_service);

まあ、これはうまくいきません。リモート オブジェクト Model は、しばらくすると死にます。

この動作を確認しますか?

オブジェクト Model がインスタンス化されて直接返されるため、サーバー上のライフタイム マネージャーにはリースを初期化する機会がないためだと思います。

4

1 に答える 1