情景是这样的..
网页打开一个数据列表..数据要求实时从其他多个平台上获取..
所以就有了一个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:你的路径at启动服务.Bat"; //Bat文件路径 p.Start(); //开始执行 p.WaitForExit(3000); //是否一直等待执行的Bat文件执行完毕..或者等3秒 p.Close(); //执行结束
上边的代码我也是从别处Copy来的..我只是加了些备注...先谢过那位大神..
然后到这里你本地测试应该是没有问题的..
但是发到服务器上就不尽然了..
发现执行不了这个Bat了..
这是因为你在本地使用VS执行程序..使用的是本地账户..可是服务器上使用的是网络账户..权限小的很..
可以在Applicatiaon Pool里找到本站点对应的应用程序..
属性-> 标识-> 预定义账户 -> (网络服务 改为 本地系统) -> 确定
系统会弹窗..说非常不安全..也确实是不安全..自己斟酌..
至此..Web管理WinService完成...