我们有一个.NET Windows服务偶尔关闭一个特定的服务器,在上个月约三次。日志记录显示正在调用OnStop
方法,因此我认为服务不会崩溃。但是,我们不知道是什么关闭了服务。
有什么方法可以找出关闭服务的内容吗?我可以在OnStop
期间记录任何内容吗? Windows事件查看器仅显示应用程序关闭,安全日志未显示当时已验证的任何用户帐户。
该服务在Windows Server 2003 SP2(5.2.3790)上的.NET 3.5 SP1中运行。
没有服务依赖项。此服务不依赖于任何其他服务,也不依赖于此服务的其他服务。
答案 0 :(得分:3)
由于从SCM调用此服务,无法从服务内部告知 - 无论是谁要求SCM停止您的服务,服务都看不到...
我认为你的主要选择是在那个时候检查EventLog ......其他服务也正在关闭吗?是否有任何预定的运行等?
“相当脏”的选项(最后的手段/绝望)将CanStop设置为false ...在这种情况下,会有人在停止您的服务时遇到问题并“希望”问您服务为何不是可停止...
答案 1 :(得分:0)
从我有限的经验来看,权限和安全性往往会导致Windows服务出现各种各样的问题。
该服务在什么帐户下运行? (例如,系统帐户,网络服务等)。
我过去必须做的事情是将服务设置为在具有适当权限的网络帐户下运行。您可以从属性窗口执行此操作(右键单击“服务”管理控制台中的服务。在登录中选择此帐户并选择您要使用的帐户并输入帐户密码。