제 의견에 진지하게 말씀 드렸듯이 IIS를 응용 프로그램 호스트로 사용하지 말 것을 권장합니다. 여기에는 몇 가지 단점이 있습니다 (서비스 주소를 지정하고 앱 풀을 처리하고 재활용하는 등).
대신, 저는 일반적으로 프로덕션 서비스를 자체 호스팅 방식으로 수행합니다. Windows NT 서비스 내부. 이렇게하면 훨씬 더 많은 유연성을 얻을 수 있습니다. 주소를 비롯한 모든 측면을 완벽하게 제어 할 수 있으며 원하는대로 서비스를 시작/중지 할 수 있으며 응용 프로그램 풀이 재활용되는 것은 아닙니다.
기본적으로 WCF 런타임에서 ServiceHost
의 인스턴스를 만들고 호스트에 서비스 클래스를 제공하고 선택적으로 서비스에서 끝점을 노출하는 하나 또는 여러 개의 기본 주소를 지정해야합니다. 당신이 요청을 듣고 중지 할 때
ServiceHost svcHost = new ServiceHost(typeof(MyWCFService));
// optionally set additional properties here, if needed
svcHost.Open(); // now, the host is open and accepting
, 당신은 단지 svcHost.Close()
를 호출하고 서비스 호스트가 사라 졌어요. 당신이 NT 서비스로이 패키지 때
은, 일반적으로는 설치와
OnStart
방법에서 서비스 호스트의
.Open()
을, 당신은 NT 서비스의
OnStop
방법에
svcHost.Close()
을 처리합니다.
ServiceHost
이 들어있는이 앱은 NT 서비스 일 필요는 없습니다. 특히 테스트를 위해 ServiceHost를 콘솔 앱에 넣고 시작하여 WCF 서비스에 활력을 불어 넣고 테스트 해보십시오./debug/enhance, 콘솔 앱을 다시 닫으십시오. 제 생각에는 IIS, 가상 디렉터리 등을 사용하는 것보다 훨씬 쉽습니다.
참조 :
는 성능이 로컬로 실행되는 WCF 서비스를 테스트 한 적이 있습니까? –
서비스의 프록시 개체를 어떻게 인스턴스화합니까? 거기에 문제가 있습니다. 여기에 코드를 게시 할 수 있습니까? – Pradeep
IIS는 좋은 애플리케이션 호스트가 아닙니다. 웹 서버 (다른 짐승)입니다. 심각한 일이라면, 나는 항상 NT 서비스 나 다른 것에서 나의 WCF 서비스의 자체 호스팅을 사용할 것이다. –