我有一个我写的应用程序已经运行了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的分配位置。知道为什么服务器会返回这个吗?
答案 0 :(得分:1)
我发现了问题:远程处理服务器启用了两个网卡,其中一个已拔下插头。禁用未使用的网卡可以解决问题。