System.ServiceProcess.dll 을 추가하고 싶습니다.

특정 윈도우 서비스를 감시해서 정지상태일 때 자동으로 시작 시켜야 하는 일이 생겼습니다.
그런데 MS DOCS 에서 예제를 따라했는데

System.ServiceProcess 네임스페이스 부분이 오류가 나더군요… 없다고요…
구글링 해보니깐 기본적으로 설치가 되지 않는다고 그렇게 되있던데요
어떤 해결책 보니깐 solution window 에서 무엇을 해서 추가하는 거 같은데
그 solution window 가 뭔지를 몰라서 처리를 못했습니다.

해당 System.ServiceProcess.dll 를 추가할 수 있는 방법을 알고 싶습니다.
그런데 왜 이게 기본적으로 설치가 안되어 있는 것일까요? 사용법 보니깐 간단하고
용이한 거 같던데 말입니다.

1개의 좋아요

.net - 내 C #에 System.ServiceProcess 라이브러리가없는 이유는 무엇입니까? - 스택 오버플로 (stackoverflow.com)

추가 하는 방법은 이 문서에 있는 댓글을 따라 하시면 될 듯 하고
solution window는 한국어 버전에서는 솔루션 탐색기 입니다.
구글링 하셔서 방법을 찾으셨다면 찾아 보신 링크도 같이 첨부 해 주시는 편이 좋을 것 같네요.

3개의 좋아요

원하시는게 맞는지 모르겠습니다만
참초 추가하는 방법에 대해 올립니다.

1
솔루션 탐색기에 보면 "참조"라고 보이 실겁니다.

2
참조에 커서를 올리고 마우스 오른쪽 버튼 클릭 후
"참조 추가(R)"를 누릅니다.

3
왼쪽에 어셈블리 파트를 선택 (처음 들어가면 기본으로 어셈블리가 선택되어 있을겁니다.)
System.ServiceProcess 검색
창의 오른쪽위에 보면 검색을 할 수 있습니다.(목록을 보고 찾으셔도 됩니다.)
사진과 같이 체크하고 확인버튼을 눌러주시면 됩니다.


예상해보자면 solution window는
솔루션 탐색기의 화면을 말하는 것 같습니다.
=> 1

(solution window)구글 검색시 결과 대부분이 솔루션 탐색기에 관한 내용입니다.
=> image

image

6개의 좋아요

옹… 그보다는 윈도우 서비스라면 그 자체로 복구 기능이 있는데
굳이 그걸 감시해서 수동으로 다시 시작시켜야하는 건가요?

아니면 윈도우 서비스 프로세스는 떠 있지만 hang 이 발생한 걸 체크해서
강제로 죽였다 살리는 걸 말씀하시는 건가요?

본문 내용으로보면 ServiceProcess.dll 참조가 근본적인 문제인가… 하는 생각이 들어서욤… =ㅂ=?

2개의 좋아요

수동으로 서비스를 안하려고 해당 어셈블리를 추가하려는 겁니다.
DB에 해당 프로그램 풀패스값들을 불러와 하나씩 Start 해주는 오픈소스를 가지고 있습니다.
그리고 죽었을 시 다시 해당 프로세스를 시작하는 (Check Alive) 하는 함수도 있는데요
그렇게 해도 시작이 안되는 경우 중앙서버에 해당 살아나지 않는 서비스를 알려야 하는 경우가
있어서 말입니다.

1개의 좋아요

윈도에 자체적으로 복구시키는 기능이 있긴 합니다만 횟수 제한이 있는 것으로 알고 있어요.
기본값이 어떤지는 모르겠지만 제가 사용했던 것은 서비스 시작 실패 시 1초 간격으로 3회까지 시도하고 그래도 실패하면 명령어로 실행하고 이것도 안되면 더 이상 실행하지 않도록 되어있었어요.

2개의 좋아요

서비스 복구 설정에는 실패 카운트를 셀 수 있고 (최대 3회일 겁니다.) 해당 실패 회차마다 특정 동작을 설정할 수 있죠.(서비스를 재시작한다거나 PC 를 재시작한다거나 등등)
그리고 일정 간격 동안 서비스가 실패하지 않으면 실패 카운트를 리셋하는 옵셥도 있어요.

물론 실패 간격이 매우 짧고 빈번하고 그것을 허용하지 않고 계속 되살려야하는 경우라면
윈도우 서비스에서 설정한 복구 옵션으로 충분하지 않을 수 있겠지요.
근데 이런 상황이라면 뭔가 서비스 실패 문제를 해결해야하는게 더 근본적인 해결법이 아닌가 싶어요.

뭐 상황에 따라 다르겠지만
서비스가 서비스를 감시하는 게 일반적인 상황 같아 보이진 않아서욤 =ㅂ=;;

6개의 좋아요

아 포인트를 잘못 이해했었네요…
말씀하신 내용이 맞습니다. 서비스가 실패하는데는 대부분 이유가 있어서 그 문제를 해결하는 것이 잠재적인 문제를 해결할 수 있어 가장 좋아요.

참고사항이지만 서비스가 죽은 원인을 확인하려면 윈도우즈에 내장된 [이벤트 뷰어]를 이용하시면 됩니다 :slight_smile:

3개의 좋아요