У меня есть написанное мною приложение, которое хорошо работает уже 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. Есть идеи, почему сервер вернет это?