我需要在.NET中编写健壮的代码,以使Windows服务(服务器2003)能够重新启动.这样做的最佳途径是什么?是否有一些.NET API可以做到这一点?
将服务设置为在失败后重新启动(双击控制面板中的服务并浏览这些选项卡 - 我忘记了它的名称).然后,只要您希望服务重新启动,只需调用Environment.Exit(1)
(或任何非零返回),操作系统将为您重新启动它.
Dim proc As New Process() Dim psi As New ProcessStartInfo() psi.CreateNoWindow = True psi.FileName = "cmd.exe" psi.Arguments = "/C net stop YOURSERVICENAMEHERE && net start YOURSERVICENAMEHERE" psi.LoadUserProfile = False psi.UseShellExecute = False psi.WindowStyle = ProcessWindowStyle.Hidden proc.StartInfo = psi proc.Start()
您无法确定您的服务运行的用户帐户是否具有停止和重新启动服务的权限.
您可以创建一个自我重启的DOS命令提示符进程:
Process process = new Process(); process.StartInfo.FileName = "cmd"; process.StartInfo.Arguments = "/c net stop \"servicename\" & net start \"servicename\""; process.Start();
const string strCmdText = "/C net stop \"SERVICENAME\"&net start \"SERVICENAME\""; Process.Start("CMD.exe", strCmdText);
SERVICENAME
您的服务名称在哪里(为了考虑服务名称中的空格而包含的双引号,否则可以省略).
清洁,无需自动重启配置.
这取决于你希望它重新启动的原因.
如果您只是想找到一种方法让服务定期自行清理,那么您可以在服务中运行一个定期执行清除例程的计时器.
如果您正在寻找一种在失败时重新启动的方法 - 服务主机本身可以在设置时提供该功能.
那你为什么需要重启服务器呢?你想要实现什么目标?