WCF :“System.ServiceModel.Channels.ClientReliabledUplexSessionSthechannel을 열지 못했습니다.”
-
03-07-2019 - |
문제
현재 콜백 계약 (듀플렉스)이있는 WCF 서비스가 있으며 컴퓨터에서 사용하는 응용 프로그램을 사용하면 모든 것이 잘 작동하지만 다른 컴퓨터에서 시도해 보면 연결되지 않습니다.
이 문제 가이 문제를 사용하여 전환 한 후에 발생하기 시작했습니다. wsDualHttpBinding
(콜백의 경우) 내가 사용했을 때 wsHttpBinding
모든 것이 잘 작동했습니다.
웹 서비스가 다른 컴퓨터의 요청을 수락하지 않는 이유는 무엇입니까? 수정 해야하는 호스팅 설정입니까?
로그와 관련하여, 나는 이것들을 얻고있다 :
Alt Text http://img17.imageshack.us/img17/4628/wcfissue.jpg
00:01:00의 할당 된 시간 초과 내에 오픈 작업이 완료되지 않았습니다. 이 작업에 할당 된 시간은 더 긴 시간 초과의 일부일 수 있습니다.
시스템을 열지 못했습니다 .ServiceModel.Channels.ClientReliabledUplexSessionChannel
결함이있는 System.serviceModel.Channels.ClientReliabledUplexSessionChannel
결함이있는 System.serviceModel.Channels.ServiceChannel
System.servicemodel.Channels.ServiceChannel을 열지 못했습니다
포트는 내 라우터 (TCP 및 UDP)에서 열려 있으므로 문제가되지 않습니다.
서비스 속성과 관련하여 이것이 제가 사용하는 것입니다.
상호 작용:
[ServiceContract(Name = "MusicRepo_DBAccess_Service",
CallbackContract = typeof(IOnlineUsersCallback),
SessionMode=SessionMode.Required)]
서비스:
[ServiceBehavior(
ConcurrencyMode=ConcurrencyMode.Reentrant,
InstanceContextMode=InstanceContextMode.Single)]
업데이트
관련하여 오리온 에드워즈' 게시하다:
- 방화벽이 없습니다
- 지점 1을 참조하십시오
- 네, 내 라우터에 포트가 전달 되었기 때문에 할 수 있습니다.
- IIS를 사용하여 서버를 호스팅하고 있습니다.
문제는이 문제가 내가 전환했을 때 발생하기 시작했다는 것입니다. wsHttpBinding
(잘 작동했습니다) wsDualHttpBinding
(콜백이 필요했기 때문에)
업데이트
나는 이제 전환했다 wsDualHttpBinding
에게 NetTcpBinding
그리고 어떤 이유로, 모든 것이 잘 작동합니다.
나는 사용했다 이 기사 IIS에서 호스팅을 설정하는 데 도움을주기 위해 콜백과 함께 모든 것이 예상대로 작동합니다.
해결책
나는 이제 전환했다 wsDualHttpBinding
에게 NetTcpBinding
그리고 어떤 이유로, 모든 것이 잘 작동합니다.
나는 사용했다 이 기사 IIS에서 호스팅을 설정하는 데 도움을주기 위해 콜백과 함께 모든 것이 예상대로 작동합니다.
다른 팁
서버 및 클라이언트 구성 설정을 게시하면 도움이됩니다.
다음은 wsdualhttpbinding이 어떻게 작동하는지에 대한 요약입니다. MSDN (내 강조) : :
WSDUALHTTPBINDING은 WSHTTPBinding과 웹 서비스 프로토콜과 동일한 지원을 제공하지만 이중 계약과 함께 사용합니다. wsdualhttpbinding은 비누 보안 만 지원하며 안정적인 메시지가 필요합니다. 이 바인딩은 클라이언트가 서비스에 콜백 엔드 포인트를 제공하는 공개 URI를 가지고 있어야합니다. ClientBaseAddress 속성에 의해 제공됩니다. 이중 바인딩은 클라이언트의 IP 주소를 서비스에 노출시킵니다. 클라이언트는 보안을 사용하여 신뢰하는 서비스에만 연결되도록해야합니다.
이 결합은 하나 이상의 비누 중개자를 통해 안정적으로 통신하는 데 사용될 수 있습니다.
기본적 으로이 바인딩은 신뢰성을위한 WS- 릴리아 블레칭, 메시지 보안 및 인증을위한 WS-SECURITY, 메시지 전달을위한 HTTP 및 텍스트/XML 메시지 인코딩을 통해 런타임 스택을 생성합니다.
확인해야 할 사항 :
- 윈도우 방화벽
- 안티 바이러스 제품의 방화벽
- 원격 기계에서 포트에 텔넷을 텔넷에 넣을 수 있습니까?
- "서버"가 ASP.NET Development Server에서 실행 중입니까? LocalHosts의 요청 만 수락합니다.
ServiceHost
또는 IIS에서 호스팅하십시오.