我有一个由 winform 客户端调用的 WCF 服务方法。客户端将几个字符串传递给该方法,然后该方法执行一系列可能需要超过 20 分钟的操作。在进程大约 15 分钟后,客户端收到 TCP 连接已终止的响应。WCF 服务在此之后继续处理,直到完成作业。我已将客户端绑定配置中的超时设置为每次 30 分钟。我还将编译批处理超时设置为 30 分钟。WCF 服务向客户端返回一个字符串,只是说“成功”,因此这不是关于传输的大小问题。由于某些超时,IIS 似乎正在终止 TCP 连接。
接收对http://xxxxxxxxxxxxxxx.svc的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。内部异常:底层连接已关闭:接收时发生意外错误。内部异常:无法从传输连接读取数据:现有连接被远程主机强行关闭。内部异常:远程主机强制关闭现有连接
有什么帮助吗?该错误是由 winform 客户端生成的,而不是 wcf 服务 btw 生成的。
以下是绑定设置:
<wsHttpBinding>
<binding name="WSHttpBinding_STUFFGOESHERE" closeTimeout="00:30:00"
openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288000" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:30:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>