一次只允许一个客户

Posted

技术标签:

【中文标题】一次只允许一个客户【英文标题】:Allow only a single client at a time 【发布时间】:2017-02-26 05:32:57 【问题描述】:

我现在在WCF编码,问题很标准:

我需要我的 WCF 服务器来管理硬件设备,因此我非常需要一次只允许 1 个客户端。我确实尝试了在网站上找到的一些解决方案,但都没有

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
                 ConcurrencyMode = ConcurrencyMode.Multiple)]

也没有添加

<behavior name="Throttled">
     <serviceThrottling maxConcurrentCalls="1"
     maxConcurrentSessions="1"
     maxConcurrentInstances="1" />
</behavior>

不会阻止我运行第二个应用程序并破坏服务器。

我应该了解更多有关客户端身份验证的信息还是可以添加一条神奇的线来解决这部分问题?

【问题讨论】:

WCF: Service that only allows a single client and rejects others的可能重复 【参考方案1】:

正如我之前提到的,所有这些行动都是不够的。看起来关键是保持 WCF 会话模式 - 所以,我添加了 [ServiceContract (SessionMode = SessionMode.Required)] 和 wsHttpBinding 而不是 basicHttpBinding (不允许保持会话)。 现在可以了。

【讨论】:

以上是关于一次只允许一个客户的主要内容,如果未能解决你的问题,请参考以下文章

一次只允许播放一个音频元素

GitLab Runner - 如何一次只允许一个管道运行

折叠插件:一次只显示一个面板

程序单次只允许一次执行的SAP 锁

如何实现一次只为 1 个客户端提供服务的 WebSocket 服务器

当数据来自数据库时,如何一次只选择一个单选按钮并在javascript中取消选择其他单选按钮?