我有一个 WCF 服务,我想一次处理来自所有客户端的一个请求。我希望客户端 A 的请求得到处理,客户端 B 等到客户端 A 完成后再服务甚至尝试查看它。我认为下面的代码完成了这一点。
[ServiceContract]
public interface IRestServiceImpl
{...}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}
我如何允许一次只处理一个客户并强制其他客户排队等待?
最佳答案
您需要控制服务的实例数以及并发模式。默认情况下,您的服务将配置为 InstanceContextMode.PerSession
。这意味着客户端 A 的所有请求都将按顺序处理,客户端 B 的请求也将按顺序处理,但它们不会按顺序处理,因为它们没有使用相同的服务实例。
尝试如下修改您的ServiceBehavior
:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}
有关该主题的更多信息,请查看 MSDN documentation on Sessions, Instancing and Concurrency.
关于c# - WCF 服务 Web 服务并发.Single,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978421/