Web启动服务器上的某一个服务

时间:2021-10-16 22:09:42

情景是这样的..

网页打开一个数据列表..数据要求实时从其他多个平台上获取..

所以就有了一个Web页面..还有个WinService的服务来定时获取这些数据...

问题来了..

发现Service有时会无故的停掉..给Web端的数据呈现造成困扰..

又不想出现问题就跑到服务器上开启服务..想如何能够通过Web来控制这个服务的开启和关闭..

~~~~~~~~~~~~~~~~~~~~~开整~~~~~~~~~~~~~~~~~~~~

首先创建一个Bat批处理文件..不懂什么是批处理文件的进  http://baike.baidu.com/view/295769.htm

填写内容:

NET START "ServicesName" //ServicesName 是你服务的名称

保存为Bat文件  比如:   启动服务.Bat

将这个文件放在一个固定的位置..可以是你Web项目的目录下的某个地方..总之你要知道..

Web程序写上这么一段代码

System.Diagnostics.Process p = new System.Diagnostics.Process();  //定义进程
p.StartInfo.UseShellExecute = true; //使用操作系统 shell 启动进程
p.StartInfo.CreateNoWindow = false; //设置为false将会看到程序窗口
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal; //启动进程时窗口状态
p.StartInfo.FileName = @"D:\你的路径\bat\启动服务.Bat"; //Bat文件路径 p.Start(); //开始执行
p.WaitForExit(); //是否一直等待执行的Bat文件执行完毕..或者等3秒
p.Close(); //执行结束

上边的代码我也是从别处Copy来的..我只是加了些备注...先谢过那位大神..

然后到这里你本地测试应该是没有问题的..

但是发到服务器上就不尽然了..

发现执行不了这个Bat了..

这是因为你在本地使用VS执行程序..使用的是本地账户..可是服务器上使用的是网络账户..权限小的很..

可以在Applicatiaon Pool里找到本站点对应的应用程序..

属性-> 标识-> 预定义账户 -> (网络服务 改为 本地系统) -> 确定

系统会弹窗..说非常不安全..也确实是不安全..自己斟酌..

至此..Web管理WinService完成...