我使用.Net远程处理在C#中编写了一个客户端/服务器模型。如果我将客户端连接到服务器,然后终止服务器并重新启动它,而不是在服务器关闭时尝试从客户端调用任何服务器方法,我可以愉快地重新连接。
如果我关闭服务器然后尝试从客户端ping服务器(我从单独的线程执行以避免无休止的等待)然后当服务器重新联机时,客户端永远不能与它和我的Ping线程通信在停机期间被解雇的东西在远程库的内部深处等待。我试图中止这个(如果尝试加入线程在短时间后失败)但它不会中止。我想知道这是否是问题的一部分。
如果我启动另一个客户端,那么该客户端可以很好地与服务器通信。我想我需要重新启动原始客户端的某些方面,但无法看到需要关闭的内容。我当然使我连接的服务器为空,并使用相同的地址调用Activator.GetObject(第二个客户端连接到服务器的工作正常),但是重新获取服务器根本没有帮助。 / p>
服务器通过RegisterWellKnownServiceType运行一个单例。
答案 0 :(得分:1)
我会从wireshark开始,然后用它来查看电线的实际情况。
答案 1 :(得分:1)
.NET远程处理是一项要求,还是考虑转而使用WCF?协议是更好的因素,并在需要时更明确地暴露。
答案 2 :(得分:0)
我正在解决类似的问题。我有一个工作的.NET远程处理应用程序使用配置文件进行远程处理和.NET远程处理的例程我必须集成到一个更大的应用程序中。我将它集成到更大的项目中,Activator.GetObject
返回了一个代理实例。一旦有来自代理实例的成员的呼叫,它就会在成员呼叫内部结束并且无法下车。较大的应用程序已经包含了各种配置文件,因此我在那里放置了.NET远程处理配置以及另一个用于其他thihs的配置,并且存在问题的关键。在将.NET远程处理配置放入新的空配置文件后,较大应用程序中的.NET远程处理开始起作用。