如何限制WCF服务应用程序,以便只有唯一的客户端才能访问

时间:2009-12-04 11:36:01

标签: c# wcf service limit ip

我在c#中有一个wcf服务(就像msdn例子中的计算器服务一样),我想知道是否可以将它限制为每个IP仅服务一个客户端?

我希望一次连接几个IP的可能性(至少5-6个活动会话),现在可以使用,但我不希望每个唯一的IP(或唯一的计算机)连接超过1个

2 个答案:

答案 0 :(得分:0)

如果您一次需要5个已打开的会话并且您说maxConcurrentInstances仅导致1个可用客户端,您是否将InstanceContextMode设置为= PerSession?你最有可能将它设置为Single,在这种情况下maxConcurrentCalls没有效果。将其更改为PerSession,ForeverDebugging显示的限制配置将起作用。

答案 1 :(得分:0)

我取得了一些进展。当客户端第一次调用服务时,在构造函数中我保存了他的ip地址和当前的操作上下文。

然后,如果来自同一个ip的人连接,我将中止该IP地址使用的上一个频道(最新连接具有优先权):

operationContext.Channel.Abort();

我测试了它,似乎可以释放会话,所以其他人可以使用它,但我不确定 - 这是最好的解决方案吗?