MaxPendingSessions и wsHttpBinding
Я вообще не эксперт WCF, поэтому будьте осторожны.
У нас есть приложение WCF, у которого около 100 тысяч клиентов обращаются к серверу, может быть, 100 в минуту. Протокол https через wsHttpBinding.
Время от времени мы получаем одну из нескольких ошибок:
- Коммуникационный объект не может использоваться для связи, потому что он находится в состоянии сбоя (полагаем, мы обрабатываем это с помощью правильного закрытия / прерывания от клиента, а не текущего использования, но обновление клиентов потребует времени)
- Сервер отправил обратно сообщение об ошибке, указывающее, что он слишком занят для обработки запроса
- Клиент не может завершить согласование безопасности в течение заданного времени ожидания.
Наше (мое) предположение состоит в том, что вторые две ошибки частично связаны с первой, и что это MaxPendingSessions
это сбивает нас с толку. Проблема в том, что я нахожу образцы кода, описывающие добавление его вBindingElementCollection
но на самом деле это выглядит так, только помогает клиенту, а не серверу. Я также видел "просто создайте настраиваемую привязку, которая ее устанавливает", но все, что я пробовал, - даже если служба запускается без ошибок - оставило ее в таком положении, когда она не взаимодействует, как ожидалось.
Приношу свои извинения за то, что не просто передаю код напрямую, это не разрешено моим работодателем; Я перефразирую как могу.
Я старался
<customBinding>
<binding name = "MyCustomBinding">
<security>
<localServiceSettings maxPendingSessions="1024"/>
</security>
<httpsTransport/>
</binding>
</customBinding>
но то, что он передал, не соответствовал тому, что он отправлял с https
<readerQuotas maxBytesPerRead="2147483647"/>
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows"/>
</security>
так что действительно два вопроса:
- я иду по правильному пути устранения неполадок? Вчера мы вышли в эфир, и эти проблемы не были замечены при тестировании с меньшим количеством пользователей, поэтому теперь мы немного нервничаем и, возможно, не можем мыслить правильно.
- если да, то как добавить
maxPendingSessions
кwsHttpBinding
?