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