2012-07-23 2 views
2

탑 셀프의 인스턴스를 시작하려고합니다. v. 2.3 용 바이너리를 다운로드하고 모든 것을 추출했습니다.탑 셀프 서비스/앱이 "만들기 중"에 걸림

그럼 빈 콘솔 응용 프로그램을 만들었습니다. 나는 .NET 4.0 framework에 프레임 워크를 변경 내 static void Main() 방법에 다음 코드를 추가 한 :

Host h = HostFactory.New(x => 
{ 
    x.Service< MyApp>(s => 
     { 
      s.SetServiceName("Something"); 
      s.ConstructUsing(name => new MyApp()); 
      s.WhenStarted(tc => tc.Start()); 
      s.WhenStopped(tc => tc.Stop()); 
     }); 

    x.RunAsLocalSystem(); 

    x.SetDescription("Something"); 
    x.SetDisplayName("Something"); 
    x.SetServiceName("Something"); 
}); 

h.Run(); 

consoleapp 내가 F5를 명중 할 때 예상대로 실행됩니다.

그런 다음 bin/release 출력을 topshelf/services/test 디렉토리로 복사하고 Topshelf.Host.exe를 실행합니다. Topshelf dashboard

"테스트"서비스 (15 분 이상 기다렸) "만들기"라는 계속 : 내가 대시 보드에 내 브라우저를 경우 Topshelf console output

, 이것은 내가 볼 것입니다 : 다음은 결과입니다.

내가 뭘 잘못하고 있니? 여러 종류의 콘솔 앱을 사용해 보았습니다. 내 콘솔 앱에서 install으로 전화하면 앱이 성공적으로 등록됩니다.

미리 감사드립니다.

+0

구성 파일의 이름을 올바르게 기억하고 계십니까? 구성 파일의 이름 뒤에 _exactly_를 붙여야합니다. 따라서 폴더가 test이면 config-config 파일이 test.config 여야합니다. 또는 반대, 구성 파일이 "MyAssembly.dll.config"인 경우 폴더는 "MyAssembly.dll"(예 : .dll 포함)이라고해야합니다. –

답변

1

Topshelf DLL을 콘솔 응용 프로그램에 연결할 때 명령 줄에서 콘솔 응용 프로그램을 실행해야합니다. 내가 볼 수 있듯이, 당신은 대신에 탑 셀프 호스트를 사용하려고합니다. 콘솔 응용 프로그램을 실행하면 서비스가 올바르게 시작되는지 확인해야합니다.

+0

이해가 안됩니다. 내 콘솔 응용 프로그램을 수동으로 실행하고 싶지 않습니다. Topshelf가/services 디렉토리에서 변경 사항을 청취하면서 Windows Service와 같은 여러 응용 프로그램을 실행할 수있게 할 것을 기대했습니다. Topshelf의 목적이 아닌가요? 감사! :-) – jhovgaard

+0

Topshelf에서 제공하는 기능 중 하나는 Shelving 기능입니다. 그리고 이것은 탑 셀프의 책임입니다. 이것은 포스터가 요구하는 것이며 따라서 명령 줄에서 서비스를 실행할 가능성은 부적합합니다. 나는 정확히 같은 문제가있다. 독립형으로 작동하지만 선반으로 사용하려고하면 폭탄이 터집니다. –

+1

글쎄, 선반 깨진 기능이며 3.0 릴리스에서 제거되었습니다. 동일한 프로세스 공간에서 개별 서비스를 실행하는 너무 많은 문제와 스레드에서 예외를 처리하는 방법에 대한 일반적인 이해 부족. 그래서 우리는 그것을 꺼내서 Topshelf가 서비스를 쉽게 만들기 위해 필요한 최소한의 기능 세트가되도록 단순화했습니다 (원래의 헌장이었습니다). –