我从这里http://www.codeproject.com/Articles/8771/Simple-but-potentially-useful-example-of-NET-Remot下载了一个简单的 .Net 远程处理示例。该示例有效。服务器端代码由客户端调用。现在,当我将该客户端代码复制到我自己的 C# 项目中时,如下面的代码,它给了我一个 SocketException: No connection could be made because the target machine主动拒绝它。
编辑 1 开始
它甚至变得陌生。当我有一个测试项目作为客户端工作时,我将该工作项目添加到我正在处理的解决方案中,并运行该项目的新调试实例(它是当时从解决方案运行的唯一项目),它给了我 SocketException: No connection could be made 因为目标机器主动拒绝它。看起来它与基于解决方案的配置有关。
结束 1 结束
由于这种奇怪的行为,我想看看我是否遗漏了什么。所以我在一个新的解决方案中创建了一个新的(winforms)项目,并将完全相同的代码放在新的 form1_load 事件中。它可以工作,服务器端代码被这个新创建的 winforms 应用程序调用。通过使用完全相同的代码,一个应用程序怎么可能通过远程连接来执行服务器端代码,而另一个应用程序却不能呢?是的,我关闭了 Windows 防火墙,并且没有任何其他防火墙。
以上所有内容均在一台计算机上进行了测试。所以不涉及物理网络。
有什么建议么?
[STAThread]
static void Main()
{
TcpClientChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel);
IProcessActivator.IProcessActivator process_activator = (IProcessActivator.IProcessActivator)Activator.GetObject
(
typeof(IProcessActivator.IProcessActivator),
"tcp://localhost:9000/ProcessActivator"
);
process_activator.Run("IExplore.exe", @"http://www.codeproject.com");
}