gpt4 book ai didi

c# - 如何使 WCF 服务一次只接听一个电话

转载 作者:行者123 更新时间:2023-11-30 22:02:16 25 4
gpt4 key购买 nike

我们有一个像

这样的 WCF 服务
Public Class MyService

{

[OperationContract]
Public void OpperationA()
{
}

[OperationContract]
Public void OpperationB()
{
}

[OperationContract]
Public void OpperationC()
{
}

[OperationContract]
Public void OpperationD()
{
}
}

我们有这个 WCF 服务的客户端,它是一个 Windows 服务,它使用新代理调用 OperationA/B/C/D 之上的所有操作。

在当前的实现中,我们遇到了客户端同时调用所有操作的问题。
InstanceContextMode = PerCall 和 ConcurrencyMode = Single

是否有 InstanceContextMode 和 COncurrency 的任何组合可以将我的服务更改为一次只接受一个请求,我的意思是如果客户端代理 A 调用了 OPerationA 并且服务正在处理请求并且如果客户端代理 B 尝试调用OperationB(或任何其他操作),它应该被阻塞,直到第一个请求完成。

谢谢

最佳答案

将 InstanceContextMode 更改为 Single 应该就足够了。来自 MSDN 文档 here :

ConcurrencyMode=Single :服务实例是单线程的,不接受重入调用。如果 InstanceContextMode 属性为 Single,并且在实例服务调用时有其他消息到达,则这些消息必须等到服务可用或消息超时。

关于c# - 如何使 WCF 服务一次只接听一个电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27013419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com