サービスは正しくインストールされますが、サービスウィンドウを介して、またはサービスウィンドウから開始しようとすると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();
}
}
ビジネス上の理由から、管理者を使用するユーザーアカウントを作成することはできないため、この問題を修正する方法についての提案をいただければ幸いです。