.NET Remoting: иногда возвращаемый объект пуст, иногда ошибка, поскольку попытка подключения не удалась из-за того, что подключенная сторона неправильно ответила

У меня проблема с .NET Remoting (VB 2010). Я сделал клиент-серверное приложение, которое отлично работает в локальной сети. Когда я запускаю клиента за пределами локальной сети, я получаю пустой объект или сообщение об ошибке: «Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом 192.168.5.60:9100».

У меня есть правило NAT на маршрутизаторе, и брандмауэр Windows не блокирует приложение ни с одной стороны. Проблема в том, что с клиента, который я подключаюсь к общедоступному IP-адресу, маршрутизатор перенаправляет на сервер. Затем в следующий раз, когда клиент вызовет локальный IP-адрес сервера, который является другой сетью, и соединение не будет выполнено, что приведет к указанной выше ошибке. Почему клиент подключается к локальному IP-адресу сервера при последующих вызовах? Может ли кто-нибудь помочь мне решить эту проблему. У меня нет файлов app.config на обоих концах. Изменить: у меня нет сервера брандмауэра, просто обычная настройка ROUTER> SERVER (LAN).

Код клиента:

Dim URI as string = " tcp://109.120.24.82:8100/FTObj"
RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off
tcpChannel = New Tcp.TcpChannel(9100)
ChannelServices.RegisterChannel(tcpChannel, False)
Dim FTFactoryObj As IFTFactory.IFTFactory = DirectCast(Activator.GetObject(GetType(IFTFactory.IFTFactory), URI), IFTFactory.IFTFactory)
IFTObjC = FTFactoryObj.createFTObj

Код сервера:

 tcpChannel = New Tcp.TcpChannel(9100)
ChannelServices.RegisterChannel(tcpChannel, False)
RemotingConfiguration.RegisterWellKnownServiceType(GetType(FTFactory.FTFactory), FTConfig.ServerAppObject, WellKnownObjectMode.Singleton)

person Tony Dsouza    schedule 27.10.2013    source источник
comment
Ошибки, которые вы видите, не имеют ничего общего с удаленным доступом. Это ошибки уровня TCP. Вы можете отладить их с помощью telnet.   -  person usr    schedule 27.10.2013
comment
Нет, это связано с удаленным взаимодействием. Хост-приложение на сервере предоставляет клиенту локальный IP-адрес сервера, а затем клиент обращается к локальному IP-адресу вместо общедоступного IP-адреса. Думаю, мне не хватает некоторых настроек.   -  person Tony Dsouza    schedule 27.10.2013
comment
Обдумайте этот ответ: stackoverflow.com/questions/2385815/   -  person Tyler Jensen    schedule 28.10.2013
comment
Значит, .NET Remoting нельзя использовать вне локальной сети? У меня нет событий на сервере, которые вызывают у клиентов, ничего подобного. Просто первый вызов идет правильно, второй вызов идет на локальный IP-адрес сервера (в другой сети).   -  person Tony Dsouza    schedule 28.10.2013