C# 远程呼叫永远不会返回。可能是远程冲突?

C# 远程呼叫永远不会返回。可能是远程冲突?,c#,.net-remoting,C#,.net Remoting,我正在尝试建立对第三方应用程序的.Net远程呼叫。下面是我为该连接提供的示例代码(删除了专有名称): 正常调用此代码时,它挂起在第三方。最小化,并在诊断窗口中输出一个SocketException,并显示以下消息: No connection could be made because the target machine actively refused it 只有在我关闭第三方应用程序时,呼叫才会返回 我选中了netstat-bano,端口9090上唯一运行的应用程序就是我正在尝试连接的应

我正在尝试建立对第三方应用程序的.Net远程呼叫。下面是我为该连接提供的示例代码(删除了专有名称):

正常调用此代码时,它挂起在第三方。最小化,并在诊断窗口中输出一个
SocketException
,并显示以下消息:

No connection could be made because the target machine actively refused it
只有在我关闭第三方应用程序时,呼叫才会返回

我选中了
netstat-bano
,端口9090上唯一运行的应用程序就是我正在尝试连接的应用程序

因此,我将调用移动到我的应用程序中
Main()
函数的前几行,它工作正常。问题是,这不是它应该在的地方

我的应用程序包含许多其他到不同服务器(不在端口9090上)的远程处理调用以及WCF服务。我的猜测是,其中一件事是干扰

有没有办法弄清楚为什么这个远程通话永远不会回来

更新:
我已经确定SocketException可能是一种误导,因为这些异常是在第三方测试应用程序中工作时创建的。另外,它挂起的原因似乎是因为它正在等待一个永远不会获取任何数据的Socket.Read()。

事实证明,在.NET远程处理中,每个AppDomain只能有一个TCPClientChannel。GetObject()使用注册的第一个通道

这被阻塞的原因是因为我在AppDomain中已经有了TCPClientChannel设置。注册时,此通道的安全设置为false。i、 e

ChannelServices.RegisterChannel(_channel, false);
我试图与之交谈的服务启用了安全性,因此远程通话将挂起,试图侦听一个永远不会出现的响应

解决方案是将我的集成加载到一个新的AppDomain中,这样我就可以以不同的方式配置TCP通道

ChannelServices.RegisterChannel(_channel, false);