我似乎找不到让 C# 服务在 debian 中作为“服务”运行的方法。我究竟做错了什么?
我按照 msdn 的这篇文章创建了一个示例 Windows 服务: http: //msdn.microsoft.com/en-us/library/zt39148a (v=vs.80).aspx
我可以在我的 Windows 机器上运行该服务,启动和停止该服务并查看它是否写入 MyNewLog。
然后我将它(.exe 文件)复制到我的 debian 机器并尝试使用(作为 root)单服务 MyNewService.exe 运行它
Syslog 告诉我服务已经启动!
我没有错误,并且在系统中看不到任何新创建的日志文件。我究竟做错了什么?
如果有帮助,这里是代码:Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
namespace MyNewService
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[]
{
new MyNewService()
};
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
}
}
服务.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
namespace MyNewService
{
public partial class MyNewService : ServiceBase
{
public MyNewService()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
myEventLog.Source = "MySource";
myEventLog.Log = "MyNewLog";
}
protected override void OnStart(string[] args)
{
myEventLog.WriteEntry("Service Started: OnStart");
}
protected override void OnStop()
{
myEventLog.WriteEntry("Service Halted: OnStop.");
}
}
}
/干杯