rmd*_*ssa 16 .net windows wcf web-services exception-handling
我有一个在.net中开发的客户端应用程序向wcf服务发送请求并且应该发送响应.如果执行时间在1分钟内,则没有错误,如果超过1分钟则错误是
内部异常:发送到net.tcp:// localhost:18001/PitToPort/2008/01/30/StockpileService/tcp的请求操作未在配置的超时(00:01:00)内收到回复.
分配给此操作的时间可能是较长超时的一部分.这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息.请考虑增加操作超时(通过将通道/代理转换为IContextChannel并设置OperationTimeout属性)并确保该服务能够连接到客户端
如何增加时间以及如何?什么是最好的解决方案?
Yan*_*rtz 63
请注意,此错误消息是WCF发送的样板字符串,当它不知道发生了什么.这真的意味着"mmh链条出了问题,但我不确定是什么,所以,这里有一些关于配置的琐事,做你想做的事情".
大多数时候,当你收到这条消息时,它与实际的超时无关.它可以是配额(图中的对象数,总大小,数组长度)或服务器端出错的东西,在服务方法返回结果的时间和通过网络发送的实际字节之间.所以,你应该检查你的配置设置(而不是超时,除非你必须等待一分钟才能得到错误.如果你马上得到错误,它与任何超时无关).
这个无用的消息是我的WCF烦恼列表之上.
mar*_*c_s 14
超时称为"sendTimeout",您可以在配置文件的绑定部分或代码中配置它 - 您的选择.
配置:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding sendTimeout="00:03:00" />
</netTcpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)
这会将超时设置为3分钟.
渣
我已将以下代码添加到服务应用程序代码中
system.transactions
defaultSettings timeout="00:30:00"
Run Code Online (Sandbox Code Playgroud)
使用此代码,服务将等待 30 分钟以在数据库服务器中完成进程并增加
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
Run Code Online (Sandbox Code Playgroud)
在客户端绑定属性中,那么它就可以正常工作。
问题:服务正在发送响应,但客户端缓冲区大小之前较小,我增加到最大缓冲区大小。
| 归档时间: |
|
| 查看次数: |
68744 次 |
| 最近记录: |