私は小さなサービスを構築しました(c#、net 4)。開発環境でいくつかのテストと調整を行った後、自分の PC で試してみました。すべて正常に動作しています。
Windows 2008 R2 サーバー (実稼働環境) にサービスをインストールすると、1053 エラーが発生して開始されません (サービスがタイムリーに開始されません)。
奇妙なことに、サービスを開始すると、1、2 秒後に突然このエラーが発生します。オプション this.RequireMoreTime(120000) をサービスに追加し、ServicePipelineMode のレジストリ キーを編集しました。
いくつかの詳細情報:
- Log4net を使用して、イベントをアプリケーション ログに記録しています。
- カスタム ソース (powershell コマンドを使用して作成) を使用しています
- サービスは、ネットワーク サービス アカウントで実行するように設定されています。管理者アカウントで開始すると、同じ結果が得られます。
- すべての部分を Try - catch using log.error(exception.tostring()) の下に置きましたが、イベント ログには何も記録されません。
- 私はウェブ上で多くの投稿を読みましたが、修正するのに役立つものは何もありません。
開発者とサーバーには同じフレームワークがあります。
どんな助けでも大歓迎です。
よろしくお願いします。
編集:
プロジェクトの開始点である program.cs に try-catch を追加しようとしました:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
try
{
if (!EventLog.SourceExists("CheckMail"))
{
EventLog.CreateEventSource("CheckMail", "Application");
EventLog.WriteEntry("EventSystem", "EventSource created");
}
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new CheckMailSvc() };
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
string message = string.Format("Error starting Service {0}", ex.ToString());
EventLog.WriteEntry("CheckMail", message, EventLogEntryType.Warning, 666);
}
}
}
何もトラップされません (EventSource create イベントも例外もありません)。
他のすべてのコードは try-catch にあり、log4net を使用してイベントをログに記録します (開発環境では正常に動作します)。