リモートサーバーにシングルトンサービスがあります。これには、新しいオブジェクトをクライアントに返すメソッドがあります。
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 がインスタンス化されて直接返されるため、サーバー上のライフタイム マネージャーにはリースを初期化する機会がないためだと思います。