.NET Remoting при подключении к неправильному хосту - PullRequest
1 голос
/ 15 июня 2010

У меня есть приложение, которое я написал, и оно работает хорошо уже 4 года.Вчера они переместили все свои серверы и установили около 60 ожидающих обновлений Windows, и теперь он сломан.Приложение использует удаленное взаимодействие для обновления некоторой информации на другом сервере (10.0.5.230), но когда я пытаюсь создать свой удаленный объект, я получаю следующее исключение: Сообщение об ошибке: не удается установить соединение, поскольку целевой компьютерактивно отказался 127.0.0.1:9091 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);

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

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

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

1 Ответ

1 голос
/ 16 июня 2010

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

...