Я использую .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" ) )
, оно всегда отключается. Я не защищен брандмауэром, и мои порты перенаправлены правильно. Я могу использовать этот порт для приложений на основе сокетов, но не для удаленного доступа по некоторым причинам. Пожалуйста, помогите!