C# 减少WCF通道Dispose呼叫的超时时间?

C# 减少WCF通道Dispose呼叫的超时时间?,c#,wcf,C#,Wcf,在WCF频道上调用Dispose()有时会阻塞一分钟,直到引发TimeoutException为止。通常情况下,如果服务器已经从其端拆下了通道,则会出现这种情况 由于我们正在尝试处理该通道,并且通常在通道已从另一端拆下时发生这种情况,因此是否可以缩短dispose()调用所用的超时时间 在WCF通道上调用Dispose()有时会阻塞一分钟 直到引发TimeoutException。这似乎是普遍的,如果 服务器已经从其端拆下了通道 不总是这样。根据您的绑定和通道管理,在服务完成操作处理之前,您无法

在WCF频道上调用
Dispose()
有时会阻塞一分钟,直到引发
TimeoutException
为止。通常情况下,如果服务器已经从其端拆下了通道,则会出现这种情况

由于我们正在尝试处理该通道,并且通常在通道已从另一端拆下时发生这种情况,因此是否可以缩短
dispose()
调用所用的超时时间

在WCF通道上调用Dispose()有时会阻塞一分钟 直到引发TimeoutException。这似乎是普遍的,如果 服务器已经从其端拆下了通道

不总是这样。根据您的绑定和通道管理,在服务完成操作处理之前,您无法关闭/处置通道

有一篇珍贵的文章解释了为什么单向调用并不总是单向的,也就是为什么关闭一个通道会阻塞。这可以帮助您选择其他绑定配置

因为我们正试图处理这个频道 当通道已从另一个通道拆下时发生 结束时,是否可以缩短用于测试的超时时间 Dispose()调用

这可以通过客户端配置文件中的客户端超时设置来管理。有四种设置(打开、发送、接收和关闭)。这取决于您的绑定,但通常是这样的(此处为一分钟):


交易如下:当服务的请求处理需要1分钟30分钟时,WCF客户端在此持续时间之后抛出TimeoutException

调用Dispose或Close基本相同,将尝试关闭通道。您必须非常清楚Dispose/Close问题:关闭通道可能引发异常,导致通道保持打开状态。请阅读避免这种情况的方法


我也很好奇为什么在您的上下文中调用Dispose需要60秒。这表明某些东西在WCF实现中是无效的。

为什么不把它放在工作线程上,让它做它自己的事情呢?我做了,而且可能无论如何都会做,但这取决于执行的调用数量,可能会有大量线程被占用。
<binding openTimeout="00:01:00" 
             closeTimeout="00:01:00" 
             sendTimeout="00:01:00" 
             receiveTimeout="00:01:00">
</binding>