Asp.net WCF频道“;超时“;当发送大量数据时

Asp.net WCF频道“;超时“;当发送大量数据时,asp.net,wcf,Asp.net,Wcf,我有一个“自托管”WCF服务器,作为控制台应用程序运行。与此连接的是一个ASP.Net网站,它按需从WCF服务中提取数据-我向该服务索取x记录,并将它们返回给我 多年来,它一直运行良好,但最近我们看到它在尝试通过通道拉取大量数据时失败了——我不是说千兆字节或任何东西:它是一个相当简单的对象列表。引发的异常是: 请求通道在之后等待答复时超时 00:01:00. 增加传递给请求调用的超时值或 增加绑定上的SendTimeout值。分配给……的时间 此操作可能是较长超时的一部分 这绝对不是超时-异常会

我有一个“自托管”WCF服务器,作为控制台应用程序运行。与此连接的是一个ASP.Net网站,它按需从WCF服务中提取数据-我向该服务索取
x
记录,并将它们返回给我

多年来,它一直运行良好,但最近我们看到它在尝试通过通道拉取大量数据时失败了——我不是说千兆字节或任何东西:它是一个相当简单的对象列表。引发的异常是:

请求通道在之后等待答复时超时 00:01:00. 增加传递给请求调用的超时值或 增加绑定上的SendTimeout值。分配给……的时间 此操作可能是较长超时的一部分

这绝对不是超时-异常会立即抛出。我已经把它缩小到一个大小问题:如果我要求的数据少一点,它就可以正常工作——因此50条记录就可以了,但51条记录抛出了异常,我确信这意味着某些东西在某处达到了极限

在服务器端,我可以看到请求被接收并发送回客户端。在我能看到的任何地方都没有例外

在客户端和服务器上,我都使用了相当简单的
WSHttpBinding
。我已经将所有的“Max”值设置为荒谬的大数字——我知道这不是最佳做法,但该服务只是内部的,我可以在以后对其进行调整

绑定为:

 WSHttpBinding binding = new WSHttpBinding
            {
                Security = { Mode = SecurityMode.None },
                MaxReceivedMessageSize = Int32.MaxValue,
                MaxBufferPoolSize = Int32.MaxValue,
                ReceiveTimeout = TimeSpan.FromSeconds(60),
                SendTimeout = TimeSpan.FromSeconds(60),
                CloseTimeout = TimeSpan.FromSeconds(60),
                ReaderQuotas = new XmlDictionaryReaderQuotas
                {
                    MaxStringContentLength = Int32.MaxValue,
                    MaxArrayLength = Int32.MaxValue,
                    MaxNameTableCharCount = Int32.MaxValue,
                    MaxDepth = 32
                }
            };
web.config
中,我有:

maxRequestLength="40971520"
system.web下


有人能建议是什么导致出现“超时”错误,更重要的是如何解决它吗?

显示您的配置文件如果您忘记在应用程序中使用绑定service@KhurramAli:我没有使用配置文件。我完全在代码中设置绑定(是的,我知道这不是最好的方式,但是…@KenD设置绑定类似这样的@KenD:MaxDepth=32增加到最大大小,同时尝试增加接收超时并检查它是否工作