我一直在使用WCF开发Silverlight应用程序。
问题在于,有时会引发异常,说明:
“对'http:// localhost:1276 / Foo.svc'的HTTP请求已超过分配的超时。分配给此操作的时间可能是较长超时的一部分。”
那么如何增加时间跨度?有些人建议在web配置和service.client配置文件中使用接收时间,如下所示
<bindings>
<customBinding >
<binding name="customBinding0" receiveTimeout="02:00:00" >
<binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647" maxSessionSize="2147483647" />
<httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Buffered"/>
</binding>
</customBinding>
</bindings>
receiveTimeout属性的最大值是什么?
答案 0 :(得分:22)
我认为问题不在于您的ReceiveTimeout超出了该设置的最大值,因为TimeSpan的MaxValue超过了1000万天。相反,我认为设置没有生效。
您应该尝试按this blog post增加服务器和客户端的超时值:
在服务器上(在你的web.config中)
<binding name="customBinding0" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00">
在客户端(在ServiceReferences.ClientConfig中)
<binding name="CustomBinding_DesignOnDemandService" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00">
答案 1 :(得分:4)
HTTP请求已超过分配的超时。分配给此操作的时间可能是较长超时的一部分。
设置时间值以解决此问题的三个地方......
的Web.Config
<httpRuntime executionTimeout="600" />
(这是秒,所以这里是10分钟)。关于httpRuntime的更多信息。
在您的Web.Config绑定元素
上<binding name="customBinding123" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00" />
在system.serviceModel
中的ServerReferences.ClientConfig绑定元素上<binding name="CustomBinding" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00" />
答案 2 :(得分:1)
前几天我们收到了同样的错误消息。我找到了这个帖子,但在我们开始增加不同的超时属性之前,我们检查了客户端机器的防病毒软件:它是NOD。较新的NOD(可能还有其他AV)具有端口过滤/阻塞功能。我们关闭了80/443端口阻塞,并且客户端连接时没有出现任何超时错误消息。