"Object has been disconnected or does not exist at the server" exception

This is because the Lifetime management on the server side disconnects the object when its lease expires, to allow GC to collect it. If you try to use it from the client side, you will get an Exception, even if it has not been GC'd on the server yet (e.g. because there still is another reference to it) but the lease has expired. This is to avoid unpredictable behaviour. The accepted answer provides a good reference on how to correctly manage the lifetime of Remote .NET Objects.


That is probably because the local garbage collector at the server side collects the object. You can prevent that by renewing the leasing. You can read more about that in these articles:

  • Managing the Lifetime of Remote .NET Objects with Leasing and Sponsorship
  • CLR Inside Out: Managing Object Lifetime

Update: Unfortunately, the MSDN Magazine issues from 2008 or older are no longer browseable online, but only as .chm files that you have to download to your local machine. The previous issues can be found in:

  • Managing the Lifetime of Remote .NET Objects with Leasing and Sponsorship in December 2003 issue
  • CLR Inside Out: Managing Object Lifetime in November 2007 issue