Как ограничить приложение службы WCF, чтобы только уникальные клиенты имели доступ - PullRequest
1 голос
/ 04 декабря 2009

У меня есть служба wcf в c # (например, служба калькулятора из примеров msdn), и мне было интересно, можно ли ограничить ее, чтобы она обслуживала только 1 клиента на IP?

Я хочу, чтобы несколько IP-адресов могли быть подключены одновременно (не менее 5-6 активных сеансов), и это работает на данный момент, но я не хочу более одного подключения на уникальный IP-адрес (или уникальный компьютер)

Ответы [ 2 ]

0 голосов
/ 07 декабря 2009

я добился определенного прогресса. когда клиент вызывает сервис в первый раз, в конструкторе я сохраняю его IP-адрес и его текущий контекст операции.

затем, если подключается кто-то с того же ip, я прерываю предыдущий канал, который использовал этот ip-адрес (последнее соединение имеет приоритет):

operationContext.Channel.Abort();

Я проверил это, и оно, кажется, освобождает сеанс, чтобы другие могли его использовать, но я не уверен - это лучшее решение?

0 голосов
/ 04 декабря 2009

Если вам нужно 5 открытых сессий одновременно, и вы говорите, что maxConcurrentInstances вызывает только 1 годного к использованию клиента, вы установили InstanceContextMode = PerSession? Скорее всего, он установлен в Single, в этом случае maxConcurrentCalls не имеет никакого эффекта. Измените его на PerSession, и конфигурация регулирования, показанная ForeverDebugging, будет работать.

...