「啓動後又停止」當你的服務器拋出啓動過程中的異常通常出現的消息。這可能有很多原因,包括無效路徑和由於缺少源代碼或權限不足而無法寫入應用程序事件日誌。
我通常包括運行我的服務作爲控制檯應用程序的選項。 這使我可以使用Console.WriteLine
來顯示任何異常。
以下假定您的服務從System.ServiceProcess.ServiceBase
延伸。
partial class MyService : ServiceBase
{
private static void Main(string[] args)
{
MyService svc = new MyService();
if (Environment.UserInteractive)
RunConsole(args, svc);
else
Run(svc);
}
public MyService()
{
InitializeComponent();
}
protected static bool KeepRunning { get; set; }
protected override void OnStart(string[] args)
{
StartServiceHost();
}
protected override void OnStop()
{
StopServiceHost();
}
protected override void OnShutdown()
{
StopServiceHost();
base.OnShutdown();
}
private static void RunConsole(string[] args, ConverterService svc)
{
// need to hold on to Ctrl+C, otherwise StopServiceHost() never gets called
Console.CancelKeyPress += (sender, e) => ShutDown(svc);
KeepRunning = true;
svc.OnStart(args);
Console.WriteLine("Press <Ctrl+C> to exit.");
while (KeepRunning)
{
Console.ReadLine();
}
}
private void StartServiceHost()
{
// start your service
}
private void StopServiceHost()
{
// stop your service
}
private static void ShutDown(MyService svc)
{
Console.WriteLine("exiting...");
svc.OnStop();
KeepRunning = false;
}
}
請發佈您的'OnStart'方法的代碼。 –
我已將隨機鏈接移除,看起來像是您的網站。不要這樣做。完全無關你的帖子。 – tnw
Windows服務常見的首次部署問題與事件日誌有關。如果您的服務使用自定義源寫入應用程序事件日誌,則需要創建源代碼。通常安裝人員會爲你做這個。暫時嘗試在LocalSystem等特權帳戶下運行服務,以查看您的事件是否顯示。 –