클라이언트가 몇 초마다 WCF 서비스를 호출하는 클라이언트/서버 앱을 개발 중입니다. 저는 IIS를 사용하지 않고 있습니다.이 서비스는 콘솔 앱으로 실행됩니다 (프로덕션 시스템에 Windows 서비스로 설치하려는 의도로). WCF netTcpBinding을 사용하여 통신/서비스 장애를 복구하는 방법은 무엇입니까?
나는 클라이언트가 단순히 던져 가져옵니다EndpointNotFoundException
를 처리하여 서비스에 연결할 수 없다는 사실을 무시은 BasicHttpBinding을 사용하여 시작했다, 내가 서비스를 중지하는 경우 (A COMMS/서버 장애를 시뮬레이션). 서비스를 다시 시작한 후 클라이언트는 다시 호출 할 수 있으며 모든 것이 좋습니다.
이제는 netTcpBinding을 사용하도록 전환했습니다. 서비스를 중지하면 콘솔 창이 닫힐 때까지 약간 걸립니다 (아마도 TCP가 연결을 관리하는 방식으로 인해 결국 시간이 초과되기 때문일 수 있습니다). 이 시점에서 클라이언트는 CommunicationException
을 가져옵니다 ("소켓 연결이 중단되었습니다"). 서비스를 다시 시작하면 클라이언트는 basicHttpBinding에서와 같이 "다시 시작"할 수 없습니다. 서비스를 호출하려고 시도 할 때마다 CommunicationObjectFaultedException
("통신 개체, System.ServiceModel.Channels.ServiceChannel은 오류 상태이므로 통신에 사용할 수 없습니다.")가 발생합니다.
어떻게 내가은 BasicHttpBinding으로 본 것과 유사한 이력서/복구 행동의 어떤 종류에서 건물 가겠어요?
매력적인 작품 덕분입니다! –