WCF服务Web服务Concurrency.Single

时间:2012-12-20 18:39:19

标签: c# wcf service web

我有一个WCF服务,我想一次处理来自所有客户端的一个请求。我希望处理客户A的请求,并且客户B要等到客户A完成,然后服务才会尝试查看它。我认为下面的代码完成了这个。

[ServiceContract]
public interface IRestServiceImpl
{...}

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}

如何一次只允许处理一个客户端并强制其他客户端在队列中等待?

1 个答案:

答案 0 :(得分:0)

您需要控制服务实例的数量以及并发模式。默认情况下,您的服务将配置为InstanceContextMode.PerSession。这意味着客户A的所有请求都将按顺序处理,客户B也将如此处理,但由于他们没有使用相同的服务实例,因此不会相互处理它们。

尝试修改ServiceBehavior,如下所示:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, 
                 InstanceContextMode=InstanceContextMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}

有关该主题的更多信息,请查看MSDN documentation on Sessions, Instancing and Concurrency.

相关问题