【问题标题】:How to kill own Windows Service如何杀死自己的Windows服务
【发布时间】:2009-04-16 07:58:14
【问题描述】:

WCF 服务托管在 Windows 服务 (WS) 中。

当数据库 (SqlServer 2005) 出现故障时,由于对数据库执行的操作而引发 SqlException。

我想要完成的是,当数据库也关闭时,托管 WCF 服务的 WS 也应该关闭。

顺便手动重启一下WS。

我的想法是什么都不做。未处理的异常将停止 WS。

这是正确的做法吗?

【问题讨论】:

    标签: c# .net sql-server wcf windows-services


    【解决方案1】:

    如果您想显式停止您的 Windows 服务,只需在您的服务类上调用 .Stop() 方法。

    Windows 服务可以配置为在出错时自动重新启动 - 因此仅让 SqlException 流到顶部可能无法达到您想要的效果。

    马克

    【讨论】:

    • 您展示的第一个场景将迫使我捕捉到 SqlException,然后停止 Windows 服务本身。第二种情况对我来说有点混乱:如果我将 WS 配置为在出错时重新启动,那么冒泡 SqlException 将重新启动 WS,这就是解决方案。
    • 第一种情况:我以为这就是你要求的——不是吗?第二种情况:这是标准 Windows 服务控制器的一个功能 - 您可以指定在服务的第一次、第二次和第三次失败时要做什么 - 重新启动只是其中一个选项。
    【解决方案2】:

    首先,您需要从您将得到的 SQLException 中检测到 SQL 服务器已关闭。其次,为什么要杀死 web 服务而不是向客户端返回一个错误,说服务因某某原因暂时关闭。

    【讨论】:

    • 第二点:客户就是这么想的,没商量,pffff
    • 这太愚蠢了...所以当数据库备份时,他们必须手动重新启动它?
    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    相关资源
    最近更新 更多