1

我使用 .Net 远程处理在 C# 中编写了一个客户端/服务器模型。如果我将客户端连接到服务器,然后在服务器关闭时终止服务器并重新启动它而不尝试从客户端调用任何服务器方法,我可以愉快地重新连接。

如果我关闭服务器然后尝试从客户端 ping 服务器(我从一个单独的线程执行以避免无休止的等待),那么当服务器重新联机时,客户端永远无法与它交谈,并且我的 Ping 线程被触发在停机期间,在远程库的深处永远等待。我尝试中止此操作(如果尝试加入线程在短时间内失败)但它不会中止。我想知道这是否是问题的一部分。

如果我启动另一个客户端,那么该客户端可以与服务器正常通信。我想我需要重新启动原始客户端的某些方面,但看不到需要关闭的内容。我当然将我连接到的服务器清空并使用相同的地址调用 Activator.GetObject(第二个客户端连接到服务器的操作很好),但重新获取服务器根本没有帮助。

服务器通过 RegisterWellKnownServiceType 作为单例运行。

4

3 回答 3

1

我将从wireshark 开始,并使用它来查看网络上真正发生了什么。

于 2009-04-16T19:45:22.773 回答
1

.NET 远程处理是一项要求,还是您可以考虑改用WCF ?这些协议在需要时被更好地考虑和更清晰地公开。

于 2009-04-16T20:14:42.123 回答
0

我正在解决一个类似的问题。我有一个工作的 .NET 远程处理应用程序,它使用远程处理的配置文件和 .NET 远程处理的例程,我必须将其集成到一个更大的应用程序中。Activator.GetObject我通过返回的代理实例将其集成到更大的项目中。一旦有来自代理实例的成员调用,它就会在成员调用中结束并且无法下车。较大的应用程序已经包含各种配置文件,因此我放在那里的 .NET 远程处理配置以及另一个配置文件,这就是问题的症结所在。在我将 .NET 远程处理配置放入一个新的空配置文件后,较大应用程序中的 .NET 远程处理开始工作。

于 2011-10-19T22:54:35.603 回答