c# - 具有依赖关系的 Windows 服务的关闭顺序
问题描述
我有一个 C# 服务需要在操作系统重启后关闭之前将特定文本写入 SQL Server 数据库。所以服务MSSQL$SQLEXPRESS
不应该在我的服务之前停止,为了实现这一点,我添加了MSSQL$SQLEXPRESS
使用命令的依赖项
sc.exe config MyService depend= MSSQL$SQLEXPRESS
但是,它似乎不起作用,因为我仍然收到错误
正在关机。
用户 'user' 登录失败。
无法继续执行,因为会话处于 kill 状态
当试图写入数据库时OnShutdown()
。有时错误是“无效句柄”错误..
我错过了什么?此外,sc.exe qc MyService
显示依赖关系,但下的依赖关系services.msc
不显示任何内容。为什么?
解决方案
从文档:
请注意,在服务关闭期间,默认情况下,SCM 不会考虑依赖关系。SCM 枚举正在运行的服务列表并发送 SERVICE_CONTROL_SHUTDOWN 命令。因此,一个服务可能会因为它所依赖的另一个服务已经停止而失败。
要手动设置服务的关闭顺序,请创建一个包含服务名称的多字符串注册表值,其中包含服务名称的关闭顺序,并将其分配给 Control 键的 PreshutdownOrder 值,如下所示:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PreshutdownOrder="关机顺序"
推荐阅读
- google-apps-script - UrlFetchApp.fetch() 似乎不是更改用户代理
- python - Numpy广播 - 使用变量值
- amazon-web-services - DynamoDB 共享表组的容量
- java - JavaFX 如何在控制器中拆分代码
- nginx - UserFrosting Nginx 资产原始 404
- c++ - 在多线程环境中使用 std::call_once() 进行初始化
- jquery - 尝试使用 jQuery POST 到 Flask 服务器时出现“400 Bad Request: KeyError: 'ID-mod'”错误
- python-3.x - pandas groupby 返回原始 MultiIndex 上的数据
- matlab - matlab - 找到离我的线最近的点并用它们创建一条新线
- python - 如何使生成器生成元组 (x, y) 的数据集,其中 x 和 y 是 numpy 数组?