Удаленные объекты и удаленные подключения - PullRequest
1 голос
/ 05 апреля 2009

Я использую .NET remoting для некоторых простых IPC на основе наблюдателей. У меня были две проблемы:

  1. Если я не выполняю никаких вызовов от клиента на удаленном объекте в течение нескольких минут, при попытке вызова выдается ошибка, указывающая, что соединение было разорвано. Как я могу сохранить это в живых?
  2. Я не могу принимать клиентов с других компьютеров через TCP. Я использую TcpChannel, настроенный так:

    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 );
    

И когда клиентское приложение пытается подключиться ( m_Controller = (Controller)RemotingServices.Connect( typeof( Controller ), "tcp://" + ip + ":2594/Controller" ) ), оно всегда отключается. Я не защищен брандмауэром, и мои порты перенаправлены правильно. Я могу использовать этот порт для приложений на основе сокетов, но не для удаленного доступа по некоторым причинам. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 06 апреля 2009
  1. Вы инициализировали время жизни объекта Controller? Смотри http://www.diranieh.com/NETRemoting/InDepthRemoting.htm.
  2. Смотрите мой ответ здесь: Удаленное соединение по TCP .
...