.NET Remoting подключается к неправильному хосту

У меня есть написанное мною приложение, которое хорошо работает уже 4 года. Вчера они переместили все свои серверы и установили около 60 незавершенных обновлений Windows, а теперь он сломан. Приложение использует удаленное взаимодействие для обновления некоторой информации на другом сервере (10.0.5.230), но когда я пытаюсь создать свой удаленный объект, я получаю следующее исключение: http://img692.imageshack.us/img692/8104/screenshot1ay.png

Обратите внимание, что он пытается подключиться к 127.0.0.1, а не к правильному серверу. Сервер (10.0.5.230) прослушивает порт 9091 должным образом. Эта же ошибка возникает на всех трех терминальных серверах, на которых установлено это приложение.

Вот код, который регистрирует удаленный объект:

public static void RegisterClient()
{
  string lServer;

  RegistryKey lKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Shoreline Teleworks\\ShoreWare Client");
  if (lKey == null)
    throw new InvalidOperationException("Could not find Shoretel Call Manager");

  object lVal = lKey.GetValue("Server");
  if (lVal == null)
    throw new InvalidOperationException("Shoretel Call Manager did not specify a server name");

  lServer = lVal.ToString();

  IDictionary props = new Hashtable();
  props["port"] = 0;
  string s = System.Guid.NewGuid().ToString();
  props["name"] = s;
  ChannelServices.RegisterChannel(new TcpClientChannel(props, null), false);
  RemotingConfiguration.RegisterActivatedClientType(typeof(UpdateClient),
    "tcp://" + lServer + ":" + S_REMOTING_PORT + "/");
  RemotingConfiguration.RegisterActivatedClientType(typeof(Playback), 
    "tcp://" + lServer + ":" + S_REMOTING_PORT + "/");
}

Вот код, который вызывает удаленный объект:

UpdateClient lUpdater = new UpdateClient(Settings.CurrentSettings.Extension.ToString());
lUpdater.SetAgentState(false);

Я убедился, что в RegisterActivatedClientType передается следующий URI: "tcp: //10.0.5.230: 9091 /" Почему это приложение пытается подключиться к неправильному серверу?

Дополнительная информация:

Клиент подключается к серверу: он отправляет сообщение ConstructionCall серверу и получает ответ ConstructionResponse. Этот ConstructionResponse содержит ObjRef, который ссылается на URI tcp: //127.0.0.1: 9091. Я не могу понять, где назначается этот URI. Есть идеи, почему сервер вернет это?


person Dark Falcon    schedule 15.06.2010    source источник


Ответы (1)


Я обнаружил проблему: на сервере удаленного взаимодействия были включены две сетевые карты, одна из которых отключена. Отключение неиспользуемой сетевой карты решило проблему.

person Dark Falcon    schedule 16.06.2010