我在 c# 中有一个 wcf 服务(例如 msdn 示例中的calculatorservice),我想知道是否可以将其限制为每个 IP 仅服务 1 个客户端?
我希望一次连接几个 IP 的可能性(至少 5-6 个活动会话),目前可行,但我不希望每个唯一 IP(或唯一计算机)有超过 1 个连接
如果您一次需要 5 个打开的会话,并且您说 maxConcurrentInstances 仅导致 1 个可用客户端,您是否将 InstanceContextMode 设置为 = PerSession?您很可能将其设置为 Single,在这种情况下 maxConcurrentCalls 无效。将其更改为 PerSession 并且 ForeverDebugging 显示的节流配置将起作用。
我取得了一些进展。当客户端第一次调用服务时,我在构造函数中保存了他的 IP 地址和他当前的操作上下文。
然后,如果来自同一 ip 的人连接,我会中止该 ip 地址使用的上一个通道(最新连接具有优先级):
operationContext.Channel.Abort();
我对其进行了测试,它似乎释放了会话,以便其他人可以使用它,但我不确定 - 这是最好的解决方案吗?