2012-01-20 3 views
1

Windows 서비스에서 호스팅되는 WCF 서비스가 있습니다. 이 서비스의 클라이언트는 closeTimeout, receiveTimeout, openTimeout, sentTimeout을 5 분으로 설정했습니다. 서비스도 동일합니다. 특정 상황에서 WCF 서비스는 작업을 처리하는 데 5 분 이상 걸릴 수 있습니다. 이 경우 클라이언트는 호출을 중단하지만 서비스 프로세스는 작업이 완료 될 때까지 계속 실행됩니다.클라이언트가 연결이 끊어진 경우 WCF 서버 작업 중단

이제 질문은 ... 클라이언트가 연결이 끊어 졌거나 타임 아웃 (또는 다른 것?)을 감지 할 수있는 구성/기술이 있습니까? WCF 서비스가 작업을 중단 할 수 있도록하려면 어떻게해야합니까?

답변

1

It'snoteasy, 그렇지 않은 경우 impossible (중복되는 질문입니다).

클라이언트의 연결이 끊어지면 작업을 정말로 취소 하시겠습니까? 그렇지 않으면 일종의 작업 대기열을 사용하여 일부 상태와 유사한 메커니즘을 구현할 수 있습니다.

클라이언트가 QueueQuery(query)을 호출하면 클라이언트는 그 이상을 수행하고 대기중인 쿼리에 식별자를 반환합니다. 그 후에 클라이언트는 QueryStatus(id) 폴링 상태를 유지하여 상태 (예 : "대기 중", "실행 중", "완료 됨")를 조회 할 수 있으며 쿼리가 완료되면 QueryResults(id)을 호출 할 수 있습니다.

한편 다른 서비스 (즉, WCF 서비스가 아닌 Windows 서비스)는 대기중인 모든 쿼리를 계속 실행합니다.

관련 문제