c# - WCF 服务 Web 服务并发.Single

标签 c# wcf service web

我有一个 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/

相关文章:

C#性能: construct new collection with existing items using constructor or loop?

c# - Any() 扩展方法是否处理空值?

wcf - 如何对使用 WCF Rest Starter Kit 构建的 WCF 客户端进行单元测试

json - 我如何处理 Angular 2 中的 JSON 数据?

android - 倒数计时器在后台更新用户界面

c# - 如何在 C# 中显示一行随机数而不是一列?

c# - 如何使用 linq toEntity 在单个查询中获取两个列值

c# - WCF如何创建连接到同一个服务实例的两个 channel

wcf - 使用API​​ : body serialization张贴到REST Web服务

java - 如果我想代理所有服务调用,以便在不显式调用记录器的情况下正确记录它们,我有什么选择?