.NET Remoting连接到错误的主机

时间:2010-06-15 17:01:34

标签: .net remoting

我有一个我写的应用程序已经运行了4年。昨天他们移动了所有服务器并安装了大约60个待处理的Windows更新,现在它已经坏了。应用程序使用远程处理来更新另一台服务器上的某些信息(10.0.5.230),但是当我尝试创建远程对象时,我得到以下异常: Error message: No connection could be made because the target machine actively refused it 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);

我已经验证以下URI传递给RegisterActivatedClientType:“tcp://10.0.5.230:9091 /” 为什么这个应用程序试图连接到错误的服务器?

其他信息:

客户端确实连接到服务器:它将一个ConstructionCall消息发送到服务器并接收一个ConstructionResponse。此ConstructionResponse包含一个引用URI tcp://127.0.0.1:9091的ObjRef。我无法弄清楚这个URI的分配位置。知道为什么服务器会返回这个吗?

1 个答案:

答案 0 :(得分:1)

我发现了问题:远程处理服务器启用了两个网卡,其中一个已拔下插头。禁用未使用的网卡可以解决问题。