2012-11-15 3 views
1

나는 서비스를 작성하고 C#을 사용하여 코드에서 적절한 서비스 메소드 등을 사용하여 서비스를 시작했으며, 서비스로 빌드 및 설치되었으며 서비스는 정상적으로 시작되지만, 프로세스가 실행 중인지 확인하고 출력 파일로 작성해야하는 로그를 쓰지 않습니다. 내가 짐작하면 내가 짐작하고 exe를 클릭하지만 그것이 분명히 의도 된 동작이 아니라는 것을 알아 차린다. 이것이 일어날 수있는 이유는 무엇입니까? 나는 그것을 installutil을 사용하여 설치했고 몇 가지 방법으로 시작했다. (services.msc, net start) 그들 중 누구도 실제로 일하지 않는다.C# 서비스 프로그래밍 시작 문제

미리 감사드립니다.

+3

C# 서비스가 동일한 사용자 컨텍스트에서 실행되지 않습니다. 예를 들어, 서비스가 실행중인 데스크톱 세션 (세션 0으로 생각합니까?) * 스크린 샷을 찍을 데스크톱이 없으므로 사용자 데스크톱의 스크린 샷을 찍을 수 없습니다. 로그 파일에 쓰는 방법에주의하십시오. 참조 : http://stackoverflow.com/questions/858597/why-wont-my-windows-service-write-to-my-log-file 프로세스의 경우 SYSTEM으로 실행 중입니까? 작업 관리자에서 "모든 사용자의 프로세스 표시"를보고 있습니까? – Jason

+2

시작 프로세스에 사용한 코드를 표시 할 수 있습니까? 즉 program.cs와 서비스의 시작 프로세스에 약간의 차이가 있습니까? – andrew

답변

1

Windows 이벤트 로그에서 서비스가 시작되었다는 메시지가 표시되는지 확인 했습니까? 거기에 오류가 있습니까? 그것이 시작되었다고 말하면서 오류가 없다면, 당신의 서비스는 아마 시작되었지만 당신이 원하는 것을하지 못하고 있습니다.

로그 파일에 기록하는 대신 이벤트 로그에 기록하는 것이 좋습니다. 이는 서비스의 기본 동작입니다. Log4Net이이를 도와 줄 수는 있지만 자신을 쓰는 것은 그리 어렵지 않습니다.

서비스를 작성하여 디버깅 목적으로 명령 줄에서 시작할 수도 있습니다. 다시 말하지만, 모든 작업을 수행 할 필요는 없습니다. TopShelf가이 작업을 도와 줄 수 있습니다.