我有一个在functionA中在外部服务中对functionX进行HttpWebRequest调用的WCF服务。最初,此minutes请求的超时设置为5分钟。
最近,外部服务花了超过5分钟才做出回应(我对此很满意)。所以我把httpWebRequest.timeout撞到了10分钟。
同时,wcf服务应该能够处理其他传入请求(对functionB、functionC等)。我现在所经历的是,如果functionX响应时间超过5分钟(因此functionA需要超过5分钟才能完成),那么在wcf服务中对functionB的后续请求将排队/直到functionA完成。
最后,一切都正常完成,但我不明白为什么functionB会受到functionA中正在发生的等待的影响。
如果这很难理解,请原谅我。这是一个奇怪的,我有困难,我的头围绕着这些东西是如何相关的。
发布于 2017-05-07 14:44:37
必须用以下属性装饰WCF服务类
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] // The service instance is multi-threaded.
public class Service1
{
// ...
}我假设您的并发模式被设置为单一模式,由Microsoft定义如下。
“服务实例是单线程的,不接受重入调用。如果System.ServiceModel.ServiceBehaviorAttribute.InstanceContextMode属性是System.ServiceModel.InstanceContextMode.Single,,并且在实例服务调用时附加消息到达,这些消息必须等到服务可用或消息超时。”
发布于 2017-05-06 04:10:21
我也有同样的问题。我在IIS中承载了我的服务。经过很少的搜索,我发现它是因为maxconnection在web配置中的限制。我将这一行添加到我的web.config中,问题解决了:
<system.net>
<connectionManagement>
<add address="*" maxconnection="1000"/>
</connectionManagement>
</system.net>默认情况下,maxconnection值为2,但这是许多原因之一。您应该监视您的服务器请求,以找出确切的原因。
https://stackoverflow.com/questions/43813857
复制相似问题