Удаленные объекты и удаленные подключения
Я использую.NET Remoting для некоторых простых IPC на основе наблюдателей. У меня были две проблемы:
- Если я не выполняю никаких звонков от клиента на удаленном объекте в течение нескольких минут, возникает ошибка, когда я пытаюсь позвонить, указывая, что соединение было разорвано. Как я могу сохранить это в живых?
Кажется, я не могу принимать клиентов с других компьютеров через 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 ответ
- Вы инициализировали время жизни объекта Controller? См. http://www.diranieh.com/NETRemoting/InDepthRemoting.htm.
- Смотрите мой ответ здесь: Удаленное соединение через TCP.