Windows 서비스에서 호스팅하는 WCF 서비스를 실행하고 있습니다 (asp.net 사이트에서 호출).WCF 서비스에서 "응답을 기다리는 동안 요청 채널 시간이 초과되었습니다"
이"요청 채널이 기다리는 동안 시간 초과 :합니다 (sendTimeout 속성이 초과 되었기 때문에)는"BasicHttp "엔드 포인트를 통해 호출하는 동안 내가 타임 아웃을 얻을 때
, 나는 예상되는 오류 메시지 . ... 0시 1분 0초 후 "
을하지만 (전송 보안)를 NetTcp 엔드 포인트를 통해 호출 할 때 나는 더 일반적인 오류 얻을 :
"답장 통신 개체, System.Ser를 viceModel.Channels.ServiceChannel은 오류 상태이므로 통신에 사용할 수 없습니다. "
아무도 왜 그런지 알고 있습니까? 구성에서 뭔가가 누락 되었습니까?
내 클라이언트 측 구성은 다음과 같습니다
<netTcpBinding>
<binding name="netTcpBindingConfig" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:00:10"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="655360" maxConnections="10"
maxReceivedMessageSize="65536000">
<readerQuotas maxDepth="32" maxStringContentLength="65536000" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
<basicHttpBinding>
<binding name="basicHttpBindingConfig" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:00:00.500"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536000"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="65536000" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
서비스 설정 : 어떤 도움이 많이 감사합니다
<basicHttpBinding>
<binding name="basicHttpBinding_config" maxReceivedMessageSize="5000000">
<readerQuotas maxDepth="9000000" maxStringContentLength="9000000"
maxArrayLength="9000000" maxBytesPerRead="9000000" maxNameTableCharCount="9000000" />
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="tcpBinding_config" maxReceivedMessageSize="5000000" maxBufferSize="5000000" maxBufferPoolSize="5000000" >
<readerQuotas maxDepth="9000000" maxStringContentLength="9000000"
maxArrayLength="9000000" maxBytesPerRead="9000000" maxNameTableCharCount="9000000" />
</binding>
</netTcpBinding>
! 감사합니다.
존
빠른 답장을 보내 주셔서 감사합니다. 대니얼! 이것은 내가 찾던 해결책이 아니므로 더 궁금한 점이 많습니다. 내 클라이언트 응용 프로그램 (ASP.NET 사이트)에서 WCF 서비스와의 통신에 실패 할 때 오류가 발생합니다. 내가 (디버그 동안) 타임 아웃 시나리오를 발생 시키면 BasicHttp 바인딩을 실행할 때 TimeoutException을 수신하지만 NetTcp 바인딩으로 전환하면 (다른 모든 것을 일정하게 유지), "Faultet State"예외가 발생합니다. 그래서 무엇이 오류 (즉, 타임 아웃)를 일으키는 지 알고 있습니다. NetTcp 바인딩이이를보고하지 않는 이유는 무엇입니까? Jon –
BasicHttpBinding을 사용하여이 예외가 발생하지 않는 이유는이 바인딩이 세션을 사용하지 않기 때문입니다. 세션을 사용하는 바인딩에 예외가 있으면 채널에 오류가 발생하고 세션이 파괴됩니다. –
좋아, 그래서 요점을 되풀이하다; NetTcp 바인딩을 사용할 때 채널에서 Timeout Exception을 잡을 수 없습니까? NetTcp 바인딩에서 세션을 사용 불가능하게하기 위해 엔드 포인트/서비스 구성에서 할 수있는 것이 있습니까? (세션이 필요 없기 때문에이 옵션이 유용 할 수 있습니다.) –