在Windows服务的启动方法上获取错误
本文关键字:获取 取错误 方法 启动 Windows 服务 | 更新日期: 2023-09-27 18:31:29
我已经使用(Visual Studio 8)创建了一个Windows服务,并使用installutil.exe
工具安装了它,但是我没有从中获得正确的结果,因为我在服务启动方法上执行了以下代码。
protected override void OnStart(string[] args)
{
FileStream fs = new FileStream(@"e:'mcWindowsService.txt",
FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("m ready buddy");
m_streamWriter.Flush();
m_streamWriter.Close();
}
而不是在E驱动器中创建文件,当我盯着它时,它显示以下错误!
本地计算机上的测试服务安装程序服务启动,然后停止。如果其他服务或程序未使用某些服务,则某些服务会自动停止。
将上述代码放在 Try-Catch 块中,将其写入事件日志以查找任何异常并进行调查。最好将它们放在单独的线程中以避免任何阻塞。
如果您从控制台运行该服务,请确保您的帐户具有 E 驱动程序的权限。
如果您已安装服务,并意识到它引发了异常,请设置服务安装程序的帐户类型,例如
var serviceInstaller = new ServiceProcessInstaller();
serviceInstaller.Account = ServiceAccount.LocalSystem;
我几乎可以肯定你的代码崩溃了。上面的尝试捕获建议是迄今为止最好的,因此您可以看到爆炸的内容。
进一步:尽量不要在 OnStart 中执行需要很长时间的内容 - 只执行轻型初始化内容。有一个超时,如果你超过那个侵入,Windows会抱怨它无法启动它 - 它将保持启动状态,这很烦人。在 OnStart 中,只需启动一个计时器,并在该计时器的间隔计时器的过期事件的处理程序中执行繁重的内容_Elapsed。在执行内容之前,请暂停计时器,并在操作结束后重新启动。