.net WCF NetTcpBinding超时问题-奇怪的行为

.net WCF NetTcpBinding超时问题-奇怪的行为,.net,wcf,timeout,nettcpbinding,.net,Wcf,Timeout,Nettcpbinding,我使用的绑定是NetTcpBinding(通过internet),所有并发内容和maxconnection都设置为高值(4000 maxconnection、concurrent等),因此限制设置得非常高,事实上,从服务器的wcf性能计数器可以看出,没有一个并发计数器已满,但是…但我经历了一场超时噩梦,请描述如下: “超时仅定义您必须等待服务实际失败并产生错误的时间,但修改此超时的值不会影响成功的机会。基本上,在服务请求的第一秒钟发生了一些事情,这会把事情搞得一团糟。它永远不会恢复。WCF不会神

我使用的绑定是NetTcpBinding(通过internet),所有并发内容和maxconnection都设置为高值(4000 maxconnection、concurrent等),因此限制设置得非常高,事实上,从服务器的wcf性能计数器可以看出,没有一个并发计数器已满,但是…但我经历了一场超时噩梦,请描述如下:

“超时仅定义您必须等待服务实际失败并产生错误的时间,但修改此超时的值不会影响成功的机会。基本上,在服务请求的第一秒钟发生了一些事情,这会把事情搞得一团糟。它永远不会恢复。WCF不会神奇地为您重试网络连接。好吧,有时候建立网络连接并不顺利。但是,如果您的超时时间为2小时,您必须等待整整2个小时,在它最终确认不起作用并给出错误之前,它根本不可能工作。”

我从上面的描述,这正是我遇到的问题

运营商每天都要做上千次相同的操作,有时他们会出现超时错误,即使在他们可以快速完成相同的操作后,没有任何延迟,同时也有人得到超时,在同一台计算机上,有另一个客户端实例,他们可以拨打电话,而且速度很快!检查服务器端的错误——服务实现中没有记录任何内容,数据库中也没有存储任何内容,因此请求从未调用过这些方法,因此我绝对在考虑调用初始化过程中的一些错误,可能是身份验证、令牌化、脚本化或该层中的某些内容,但我无法发现任何错误消息(可能启用wcf跟踪?)


不管怎么说,事实是,我们得到了同样的老软件,用经典asp编写,带有正常的http客户端服务器请求,而且这个问题从来没有发生过,如果我们谈论的是相同的internet连接,那么我该怎么想?当遇到一些错误时,internet explorer正在制造一些神奇的东西?WCF得到了一些隐藏配置,我可以我可以说的是,我已经尝试在WsHttpBinding中配置我们的wcf服务,并且这种超时不会发生,即使我们仍然收到一些错误,但是连接会立即释放,即使连接与tcp连接完全相同,因为默认情况下WsHttpBinding是c配置为保留tcp通道,但我仍然不明白为什么使用tcp会出现这种超时

如果有人能帮助我,我将非常感激


谢谢!

我们遇到了同样的问题,但是使用WsHTTPBinding。您可以通过在循环中调用相同的操作来模拟上述场景,而无需显式关闭客户端连接。 为避免出现此问题,请检查是否在每次操作完成后显式关闭客户端连接,否则请求将堆积在服务器上。以client.close()的形式显式关闭客户端


这将消除服务器中请求的堆积,并提高应用程序的性能。

该问题与硬件不好有关,而且很难调试,wireshark(tcp嗅探器)也是如此数据包没有显示任何特定错误,我们发现了一些tcp重试,这可能是一种症状,但实际上数据包只是卡在调制解调器路由器内的某个地方,即电信调制解调器(pirelli gate 2 plus),在更换调制解调器/路由器后,问题完全消失

不管怎样,我们发现一个基于http的wsHttpBinding,对于您无法控制的internet连接来说更可靠,并且您无法确定站点上安装了什么硬件


希望这也能对其他人有所帮助:)

“我们得到了同样的老软件,它是用经典的asp编写的,带有正常的http客户端服务器请求“……不,你没有。你可能有一个经典的ASP应用程序,它可以模拟相同的业务流程,或者其他什么,但它不是同一个软件。ASP和.NET是两种不同的鸟,有着共同的祖先,IMO。是的,我知道它们是不同的软件,但我想说的是,它们通过http请求使用internet,而使用浏览器作为internet Explorer时没有任何问题。谢谢你的回复。事实上,我正在使用,应该管理连接的关闭,但无论如何,我会调查它。但是假设caste facility没有关闭连接,为什么你认为我有时会犯错误,为什么不是所有的客户都遇到相同的问题?我还使用tcp嗅探器检查了打开的tcp连接,我看到只有几个连接仍然处于活动状态,并且仍然被每个调用使用。