该服务安装正确,但是当尝试通过net start
或从服务窗口启动它时,它根本没有启动,甚至没有到达OnStart
处理程序。
如果我使用管理员帐户,该服务将启动并正常工作。这似乎表明服务中的某些内容需要管理员权限,但这纯粹是一种按需样式的服务,在请求之前不会执行任何操作。对于这种类型的服务,我假设至少应该启动,然后在向它发出需要管理员权限的请求时失败?
调试是不可能的,因为我什至无法启动它,并且事件日志上除了表明服务已停止的信息日志之外什么也没有出现。服务中的代码太多,无法在此处全部添加,但入口点是相当标准的 Unity 样式服务:
partial class MyServiceHost : UnityServiceBase
{
private Bootstrapper _bootstrapper;
public MyServiceHost()
{
InitializeComponent();
}
protected override void OnStart( string[] args )
{
TextWriter tw = new StreamWriter( "ServiceTestLog.txt" );
tw.Write( "Date: " + DateTime.Now + "\n" );
try
{
base.OnStart( args );
_bootstrapper = new Bootstrapper( UnityContainer );
_bootstrapper.Run();
}
catch ( Exception ex )
{
tw.Write( ex.ToString() );
}
tw.Close();
}
protected override void OnStop()
{
_bootstrapper.Teardown();
base.OnStop();
}
}
出于商业原因,我不能只使用管理员的用户帐户,所以我很感激有关如何解决此问题的任何建议。