最近服务器的空间时不时就满了,导致站点都挂掉了,所以写了批处理文件,然后准备用window自带的自动任务计划去执行这个批处理,但是最终无法配置成功,在百度上也没有找到好的解决方案,所以一来气就自己写一个定时服务去调用这个批处理文件。
虽然也编码过不少的项目,但没什么机会写window服务,所以这次就刚好学下这个东西。其实C#.net的windows服务也挺简单的。
1.添加windows服务的项目
2.在项目中就出现了Service1.cs文件,在文件里面有OnStart和OnStop的方法,直接在里面实现逻辑即可。
3.创建服务安装程序,在Service1的设计视图上添加安装程序。就会在项目中创建一个ProjectInstaller.cs文件。
4.修改安装服务名
右键serviceInsraller1,选择属性,将ServiceName的值改为你所需要的服务名称。这个名称是会出现在windows服务管理的服务的列表里面的。
其中如果需要对服务进行描述,可以在Description 添加描述。(Name)这个值不用改动,这个是内部的标识,所以默认就行了。
5.修改安装的权限。
右键serviceProcessInsraller1,选择属性,这里默认是User的方式,如果是使用User的模式,那么在启动服务的时候就要输入用户名和密码,所以这里将Account的值改为LocalSystem。
如果选择了User的话,在启动的时候是这样的
6.检查
App.config
这一步很关键,这里会导致后面一大堆的问题,所以这里先跟大家说下,我的下一篇文章专门说这个问题。
检查App.config。如果Vs2012 集成了.NETFramework4.5的话,默认是使用4.5版本的。App.config是这样。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
可以看出sku=".NETFramework,Version=v4.5"。这样子你在本地调试或者本地安装的时候正常的,因为你本地有安装了.NETFramework4.5。如果你在别的电脑或者服务器去安装这个服务的时候会发现。服务安装失败,无法正常启动,然后你在手动
所以这里,如果不是一定要用到.NETFramework4.5的,就可以在App.config这里修改下为:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
7.至此,已经用C#.net写好了一个windows的服务了。接下来就是调试或者安装的问题。服务的可执行程序在bin目录下的Debug里面。