2013-06-12 3 views
0

서비스가 시작될 때 메일을 보내도록 Windows 서비스를 만들었습니다. 그것은 서비스를 디버그하고 코드를 통해 실행할 때 메일을 보내는 것처럼 서비스가 잘 작동합니다. 하지만 서비스를 설치 한 후 작동하지 않습니다. 서비스를 설치 한 후에는 메일을 보내지 않습니다.설치 후 Windows 서비스가 실행되지 않음

누구나 제게 해결책을 제안 할 수 있습니까?

답변

3

서비스 계정으로 실행할 때 하나 이상의 작업을 수행 할 수있는 권한이 부족할 가능성이 큽니다.

Windows 이벤트 로그에서 관련 오류 메시지를 확인하십시오. 테스트에서는 로그온 할 때 동일한 사용자로 실행되도록 서비스를 구성 할 수 있습니다 (문제가 권한 기반인지 확인하기 위해 중요한 보안 구멍이므로 해당 구성을 활성 상태로 두지 마십시오).

+0

정말 고마워요. –

0

디버깅 서비스가 약간 어렵습니다. try..catch 블록을 사용하여 모든 방법으로 파일에 메시지를 씁니다. 예를 들어

try 
{ 
    .. 
} 
catch(Exception ex) 
{ 
    SaveMessage(ex.ToString()); 
} 

저장 메시지 방법은 다음과 같습니다 어디에 문제가

static void SaveMessage(string s) 
{ 
    StreamWriter sw = new StreamWriter(@"C:\service_exceptions_file.txt", true); 
    sw.WriteLine(s); 
    sw.Close(); 
}   

그런 다음 당신이 볼 수 있습니다.

또한 당신은 ServiceBase.Run(ServicesToRun); 전에 다음 줄을 추가, 코드의 어느 부분이 당신의 Main() 방법에서 문제

+0

문자열을 파일로 유지하려는 경우 "File.WriteAllText"를 사용할 수 있습니다. (http://msdn.microsoft.com/en-us/library/ms143375.aspx) – Tamir

0

없이 작업하는 것을보고 언급 된 방법을 통해 코드에 어떤 메시지를 추가 할 수 있습니다

#if DEBUG 
      while(!Debugger.IsAttached) 
      { 
       Thread.Sleep(1000); 
      } 
#endif 

그런 다음 서비스를 설치하고 실행하십시오. 시작하는 동안 디버거를 서비스 프로세스에 연결하십시오 (디버그 메뉴 => 연결 대상 처리). 디버거를 디버깅 할 수 있어야합니다.

서비스를 시작하기 전에 중단 점을 설정하는 것을 잊지 마십시오.

관련 문제