我有一个在.net中开发的客户端应用程序,需要在1分钟内发送响应.if执行时间,如果超过1分钟,错误是
net.tcp://localhost:18001/PitToPort/2008/01/30/StockpileService/tcp内部异常:发送到
的此请求操作在配置的超时(00:01:00)内未收到回复。
分配给此操作的时间可能是较长超时的一部分。这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息。请考虑增加操作超时(通过将通道/代理转换为IContextChannel并设置OperationTimeout属性),并确保服务能够连接到客户端
如何增加超时时间?最佳解决方案是什么?
发布于 2009-06-02 23:57:39
我已经将以下代码添加到服务应用程序代码中
system.transactions
defaultSettings timeout="00:30:00"
使用此代码,服务将等待30分钟以在数据库服务器中完成处理,并增加
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
在客户端绑定属性中,它工作得很好。
问题:服务正在发送响应,但客户端缓冲区大小之前较小,我增加到最大缓冲区大小。
发布于 2009-06-03 00:26:22
请注意,此错误消息是WCF在不知道发生了什么情况时发送的样板字符串。这实际上意味着“嗯,链中出了点问题,但我真的不确定是什么,所以,这里有一些关于配置的琐事,可以随心所欲地处理它”。
大多数情况下,当您收到此消息时,它与实际超时无关。它可以是配额(图中的对象数量、总大小、数组长度),也可以是在您的服务方法返回结果和通过网络发送实际字节之间的服务器端出了问题。因此,您应该检查您的配置设置(而不是超时,除非您必须真正等待一分钟才能得到错误。如果你马上就得到了错误,那么它与超时无关)。
这条无用的消息在我的WCF烦心事清单的首位。
发布于 2009-05-28 05:23:23
超时时间称为"sendTimeout“,您可以在配置文件的绑定节上配置它,也可以在代码中配置它。
配置:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding sendTimeout="00:03:00" />
</netTcpBinding>
</bindings>
这会将超时设置为3分钟。
Marc
https://stackoverflow.com/questions/919287
复制相似问题