Windows 서비스 내에서 호스팅되는 WCF 서비스가 있습니다. PerSession 모드에서 작동 중입니다. 이 서비스는 클라이언트가 파일을 열고 파일을 변경하고 서비스를 통해 원격으로 파일을 닫을 수있게합니다. 지금까지 모든 것이 매우 원활하게 작동합니다.WCF 서비스를 정상적으로 종료하십시오. 열려있는 모든 세션을 완료하고 새 세션을 제한하십시오.
Windows 서비스가 중지되면 WCF 서비스에서 새 세션을 허용하지 않고 이미 연결된 클라이언트가 현재 세션을 완료하고 적절한 시간/제한 시간 내에 작업 할 수있게하려고합니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
ServiceHost.Close를 호출하면 서비스가 즉시 클라이언트 연결을 닫습니다. 나는 내가 바라는 정상적인 폐쇄가 없다. 이 동작을 수정하는 구성이 있습니까? –
@David : 아니요,이 기능을 켜기위한 설정을 모릅니다. 기본 동작이어야합니다. 아직 진행중인 서비스 호출은 정상적으로 완료되어야합니다. 그러나 이렇게하면 기존 세션이 끝날 때까지 열어 두지 않습니다. 서비스 호출이 현재 실행되고 있지 않으면 종료됩니다. –
@marc_s : ServiceHost.Close를 사용하면 ServiceHost가 진행중인 모든 서비스 호출을 완료 할 수 있지만 내 클라이언트는 이미 System.ServiceModel.CommunicationException을 받았으며 응답을받지 못합니다. 이것은 당신이 기대하는 것입니까? 해결 방법은 무엇입니까? 클라이언트가 새로운 서비스 호출을 할 때 예외를 얻지 만 ServiceHost.Close가 호출 될 때 실행중인 서비스 호출이 완료되어 예상 값을 클라이언트에 반환해야하는 경우에는 문제가 없습니다. –