使用sc命令安装C# Worker服务后提示未安装的问题排查求助
问题排查与解决方案
查看sc.exe create执行结果的方法
- 直接以管理员身份启动命令提示符,手动执行sc create命令,不要嵌套runas执行,命令执行后会直接在控制台返回成功/失败状态和错误码
- 打开Windows事件查看器,定位到「Windows 日志 > 系统」,筛选来源为「Service Control Manager」的日志,可查看服务安装、启动相关的详细错误记录
已发现的操作错误点
命令语法错误
你使用的sc create命令缺少必填的binPath参数声明,且sc命令要求参数名后的等号和参数值之间必须保留空格,你当前的命令不符合语法规范,是安装失败的核心原因。
权限问题
安装Windows服务需要本地管理员权限,使用runas指定普通用户执行安装命令默认没有足够权限,建议直接右键选择「以管理员身份运行」命令提示符后再执行操作。
发布命令笔误
你写的发布参数/p:PublishedTrimmed=true存在拼写错误,正确参数为/p:PublishTrimmed=true,同时-- self-contained中间的空格多余,该类错误虽不直接导致服务安装失败,但会导致发布配置不生效。
业务逻辑隐患
你的Worker.cs代码中,将SocketServer的初始化和启动放在了while循环内,会导致每次循环都重复创建SocketServer实例,建议将SocketServer的初始化移到循环外,仅启动一次即可。
正确操作步骤
- 修正发布命令后重新发布程序:
dotnet publish .\WorkerServiceTest2\ -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true
- 以管理员身份打开命令提示符,执行服务安装命令:
sc.exe create WorkerServiceTest2 binPath= "c:\Users\MYYUSERNAME\Documents\bla\bla\bla\WorkerServiceTest2.exe"
- 命令执行成功后即可在服务列表看到对应服务,执行启动命令即可运行:
sc.exe start WorkerServiceTest2
内容的提问来源于stack exchange,提问作者Kim Sandberg
相关产品推荐
相关产品推荐

