【发布时间】:2011-01-04 13:57:17
【问题描述】:
我正在运行由 Windows 服务托管的 WCF 服务(从 asp.net 站点调用)。
当我通过“BasicHttp”端点调用时超时(因为已超出 sendTimeout 属性),我会收到预期的错误消息:
“请求通道在 00:01:00 后等待回复时超时。....”
但是当通过 NetTcp 端点(具有传输安全性)调用时,我得到更一般的错误:
“通信对象 System.ServiceModel.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>
非常感谢任何帮助! 谢谢!
乔恩
【问题讨论】:
标签: wcf wcf-binding