.NET Windows 서비스가 있습니다. Visual Studio를 사용하여 디버깅하고 디버거를 프로세스에 연결하는 방법을 잘 알고 있습니다. 또한 디버깅을 돕기 위해 처리하는 동안 로그 파일에 서비스를 작성합니다. 내가 겪고있는 문제는 일부 사용자가 내 서비스를 설치하고 시작하려고하면 시작할 수 없다는 일반적인 오류가 발생한다는 것입니다. 나는 서비스의 시작 프로세스에 대한 광범위한 로깅을 가지고 있지만, 전에는 하나만 가지고도 하나의 프로세스가 작성되지는 않습니다. 다음은 관련 서비스 코드 :Visual Studio없이 Windows 서비스를 디버깅하려면 어떻게해야합니까? (클라이언트의 컴퓨터에서)
static void Main(string[] args)
{
ServiceBase.Run(new OSAEService());
}
public OSAEService()
{
AddToLog("Service Starting");
if (!EventLog.SourceExists("OSAE"))
EventLog.CreateEventSource("OSAE", "Application");
this.ServiceName = "OSAE";
this.EventLog.Source = "OSAE";
this.EventLog.Log = "Application";
// These Flags set whether or not to handle that specific
// type of event. Set to true if you need it, false otherwise.
this.CanHandlePowerEvent = true;
this.CanHandleSessionChangeEvent = true;
this.CanPauseAndContinue = true;
this.CanShutdown = true;
this.CanStop = true;
}
protected override void OnStart(string[] args)
{
AddToLog("OnStart");
//All the rest of my start up processes
}
public void AddToLog(string audit)
{
lock (logLocker)
{
string filePath = _apiPath + "/Logs/" + _parentProcess + ".log";
System.IO.FileInfo file = new System.IO.FileInfo(filePath);
file.Directory.Create();
StreamWriter sw = File.AppendText(filePath);
sw.WriteLine(System.DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt") + " - " + audit);
sw.Close();
}
}
어느 쪽도 "서비스 시작은"또는 "ONSTART"로그 기록받을 그리고 그것이 로그 디렉토리에 대한 권한 문제가되지 않습니다 확신합니다.
내 질문은 여기 있습니다. 내 서비스가 시작되지 않게하는 원인을 파악할 수있는 다른 방법이 있습니까?
일반 오류가 무엇입니까? 설치 프로그램이 최소 필수 프레임 워크 버전을 확인합니까? – kmcc049
EventLog.CreateEventSource가 발생하여 로그 할 수 없습니다. 또한 앱이 즉시 충돌하는 경우 로그 구현에 따라 로그가 플러시되지 않을 수 있습니다. – Joe
@ kmcc049 - 필수 프레임 워크가 누락 된 경우 서비스와 함께 설치됩니다. 두 번째 또는 두 번째 오류로 인해 이상한 것처럼 보이는 할당 된 시간에 오류가 발생하는 것입니다. – Brian