Visual Studio에서 실행 파일을 생성하는 프로젝트가 있습니다. 나는 그 실행 파일로부터 윈도우 서비스를 만들었다. 나는 그것을 실행할 때마다 다음과 같은 오류와 함께 실패합니다Windows 서비스를 실행할 때 FileNotFoundException이 발생합니다.
Error 1053: The service did not respond to the start or control request in a timely fashion.
Windows 이벤트 뷰어에서 찾고 후, 나는이 프로젝트의 작업 디렉토리에 위치 FileNotFoundException이납니다 것을 발견했습니다. 다음은 파일을 여는 부분입니다.
using (StreamReader file = File.OpenText("configSet.json"))
{
JsonSerializer serializer = new JsonSerializer();
configSet = (ConfigSet)serializer.Deserialize(file, typeof(ConfigSet));
}
Visual Studio 또는 명령 프롬프트에서 서비스를 실행할 때마다 완벽하게 작동합니다. Windows 서비스로 시작하려고 할 때 어떤 이유로이 작동하지 않습니다.
필자는 Windows 서비스로 시작할 때 파일의 경로를 하드 코딩해도 문제가 없음을 알았습니다.
나는 이것을 피하고 가능한 경우 상대 경로를 사용하고 싶습니다 (Visual Studio, 명령 프롬프트 또는 Windows 서비스에서 서비스를 실행 중인지 확인하기 위해 코드 검사를 수행 할 필요가 없습니다) .
json 파일은 어디에 있습니까? –
@ S.Petrosov 생성 된 프로젝트 폴더의 루트 폴더에 있습니다. 기본적으로 Visual Studio에 프로젝트가 있습니다. 필자는 필자의 데스크톱에 필요한 dll, 폴더 등이 들어있는 폴더를 생성했습니다.이 폴더에는 서비스를 생성하는 실행 파일이 포함되어 있습니다. json 파일도 포함되어 있습니다. 이 전체 폴더를 가져 와서 Program Files로 옮깁니다. 그 후 서비스를 생성합니다 : sc.exe create MY.SERVICE binpath = "C : \ Program Files \ myService \ myService.exe – Roka545
파일은 올바른 경로에 있지 않을 가능성이 가장 높습니다. 실행 파일이 있습니다. http://stackoverflow.com/questions/884963/what-directory-does-a-windows-service-run-in – bgura