C#中级-Windows Service程序安装注意事项
一、前言
这周除了改写一些识别算法外,继续我的Socket服务编写。服务器端的Socket服务是以Windows Service的形式运行的。
在我完成Windows Service编写后,启动服务时总是出现错误,这里我总结下如何安装、启动及排查故障。
二、正文
先说说Windows Service的安装,这是最基础的。当你编写完Windows Service后,通常要执行一段脚本,脚本与Windows Service应用在同一目录下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe UpdaterService.exe //UpdaterService为Service应用程序 Net Start SocketService //SocketService为Service名称 sc config SocketService start = auto pause
当脚本执行时出现服务启动失败(1053-服务没有及时响应启动或控制请求)时,说明你的应用有问题了。
首先要检查下Windows Service应用的dll是否完整,有没有遗漏。
然后如果是编译成功的,看下自己的Service代码是否运行在一个线程里:
using System; using System.IO; using System.ServiceProcess; using System.Threading; using System.Threading.Tasks; namespace UpdaterService { public partial class SocketService : ServiceBase { Thread threadforwork = null; public SocketService() { InitializeComponent(); } protected override void OnStart(string[] args) { if (threadforwork == null) { threadforwork = new Thread(p => { try { //Your Service } catch (Exception ex) { //Log Here } }); threadforwork.IsBackground = true; threadforwork.Start(); } } protected override void OnStop() { if (threadforwork?.ThreadState == ThreadState.Running) { threadforwork.Abort(); } } } }
顺利安装完Windows Service后如果需要卸载则,执行另一脚本,同样卸载脚本与Windows Service应用也在同一目录下:
net stop SocketService %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u UpdaterService.exe pause
如果你想删除这个Windows Service应用所在目录时,正常情况下是可以完全删除的。
但是有时候却不能完全删除,提示你当前程序被占用,无法删除。这种情况一般发生在安装服务成功,启动服务失败的时候,你去卸载就不能完全卸载干净。
你需要运行命令行去删除干净:
sc queryex ServiceName //这时会显示服务的PID taskkill /PID ServicePID /f
当命令行显示已成功删除PID之后,你就可以删除应用所在目录了。
三、结语
这周科目二考试居然挂了,平时练得各种顺利,进考场有点懵,居然在倒车入库就屁股顶线两次,真是神奇!奇怪的是,挂了之后心情却异常的好,感觉整个人都突然好了。前几周睡眠不太好,总失眠。挂了之后居然每天都睡的很香,在公司吃饭胃口也好了很多,可能这是命中注定的事吧。在线升级程序也快搞完了,可以做压力测试了。下次定能在神明的保佑下考过科目二!阿门,阿弥陀佛,阿拉胡阿克巴!
- C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计
- 安装JBoss AS 5为windows service的步骤与注意事项
- Windows Service 程序的注意事项
- C#Windows Service程序的创建安装与卸载
- c# 安装和卸载Windows Service(程序)
- C#中级-通过注册表读取Windows Service程序执行路径
- 出现“无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本Windows Installer服务的Windows Service Pack”提示如何解决?
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- 在windows下安装PostgreSQL的几点注意事项
- windows 2012 r2 x64 安装IIS注意事项
- c#开发的程序安装时动态指定windows服务名称
- UEFI模式下,Windows 10专业版 和 Ubuntu 16.0.4 LTS双系统安装以及注意事项
- C#程序中的注意事项
- Linux和Windows下安装软件注意事项
- C#项目关于程序中使用管理员权限的程序的打包,需要注意的事项
- Visual Studio2017中编写ASP.NET程序时使用C# 7.0元组Tuple新特性的一点注意事项
- mongodb在windows上安装以及注意事项
- Windows上安装AD域控制器注意事项及常见问题处理办法
- MongoDB安装为Windows服务方法与注意事项
- vs.net c# 安装、注册windows service服务,判断服务是否存在,是否启动