C# – Remoting objects and remote connections

cremoting

I'm using .NET remoting for some simple observer-based IPC. I've been having two problems:

  1. If I don't make any calls from the client on a remote object for a few minutes, an error is thrown when I do try to call, specifying that the connection has been dropped. How can I keep this alive?
  2. I can't seem to accept clients from other computers over TCP. I'm using a TcpChannel configured as such:

    BinaryServerFormatterSinkProvider serverProv = new 
        BinaryServerFormatterSinkProvider();
    serverProv.TypeFilterLevel = TypeFilterLevel.Full;
    BinaryClientFormatterSinkProvider clientProv = new 
        BinaryClientFormatterSinkProvider();
    IDictionary props = new Hashtable();
    props["port"] = port;
    TcpChannel channel = new TcpChannel( props, clientProv, serverProv );
    
    ChannelServices.RegisterChannel( channel, false );
    
    RemotingConfiguration.RegisterWellKnownServiceType( typeof( Controller ),
        "Controller", WellKnownObjectMode.Singleton );
    

And when a client app tries to connect ( m_Controller = (Controller)RemotingServices.Connect( typeof( Controller ), "tcp://" + ip + ":2594/Controller" ) ), it always times out. I am not behind a firewall and my ports are forwarded properly. I can use this port for socket-based apps but not for remoting for some reason. Please help!

Best Answer

  1. Have you initialized the Controller object's lifetime? See http://www.diranieh.com/NETRemoting/InDepthRemoting.htm.
  2. See my answer in here: Remoting connection over TCP.