WCF自托管服务,客户端清理服务停止

时间:2009-02-03 22:13:19

标签: vb.net wcf windows-services

我很想知道如何设置我的服务以便在服务器上安装完全停止服务。例如,当我有许多客户端每分钟连接和执行操作并且我想关闭服务以进行维护时,如何在服务的“OnStop”事件中执行此操作,然后让主服务主机拒绝任何新服务客户端连接并让当前连接在实际关闭其服务到客户端之前完成,这将确保服务器关闭时服务器上的数据不会被破坏。

现在我没有设置为单身,因为我需要服务的可扩展性。因此,我必须以某种方式让我的服务主机独立于知道创建了多少个服务类实例。

3 个答案:

答案 0 :(得分:2)

您只需在您创建的ServiceHost实例上调用Dispose。一旦这样做,您将不再接受任何客户端,并且该服务将继续完成已连接的客户端的操作。

答案 1 :(得分:0)

我一直想知道同样的事情。我发现这篇文章对如何正确关闭/部署为ServiceHost或Client有着非常深入的描述。

http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/

答案 2 :(得分:0)

为了实现这一目标。我必须创建自己的服务引用,并在Windows服务OnStop中启动新连接并更改WCF服务中的值以“关闭”(这只是服务在线或离线的共享布尔值)服务如此新客户端将无法连接(客户端将调用以查看服务器是联机还是脱机的功能)并且现有连接有时间完成,然后在所有客户端断开连接后,继续关闭WCF服务.Close方法。