SessionMode.NoAllowed говорит, что контракт должен быть реализован без сохранения состояния
Для NetTcp это помешало бы запуску службы в качестве сессионной по своей сути, для WSHttpBinding она подавит сеанс
maxConcurrentSessions не будет иметь эффекта, если вы используете SessionMode.NotAllowed, так как не будет сессий для регулирования
WSHttpBinding использует SecureConversation для поддержки своей концепции сеанса, если она доступна. Если он недоступен, он будет использовать надежные сообщения, если он доступен. Если ни один из них не доступен, он не может поддерживать сеанс
Я написал статью в блоге об этом материале некоторое время назад
Обновление в ответ на редактирование
Безопасный разговор и сеансы - это не одно и то же. Безопасный разговор можно использовать независимо от того, проводите ли вы сеансы или нет. Одним из способов, которым WSHttpBinding поддерживает сеанс, является использование согласования безопасного диалога для определения сеанса. Однако, если вы скажете SessionMode.NotAllowed, то WCF просто не будет иметь sessionID и не будет поддерживать сеанс - это не значит, что он не будет использовать безопасный разговор
maxConcurrentSessions ограничивает максимальное количество одновременных сеансов. Если вы выключите сессию, то количество сессий будет равно 0, и поэтому всегда будет меньше максимального значения