对* .svc的HTTP请求已超出分配的超时。分配给此操作的时间可能是较长超时的一部分。

时间:2010-11-09 12:01:35

标签: silverlight wcf timeout

我一直在使用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属性的最大值是什么?

3 个答案:

答案 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请求已超过分配的超时。分配给此操作的时间可能是较长超时的一部分。

设置时间值以解决此问题的三个地方......

  1. 的Web.Config

    <httpRuntime executionTimeout="600" />
    

    (这是秒,所以这里是10分钟)。关于httpRuntime的更多信息。

  2. 在您的Web.Config绑定元素

    <binding name="customBinding123"     receiveTimeout="00:10:00"     sendTimeout="00:10:00"     openTimeout="00:10:00"     closeTimeout="00:10:00" />
    
  3. 在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端口阻塞,并且客户端连接时没有出现任何超时错误消息。