Почему WCF отказывает каналу при использовании безопасности?
Фон:
Я заметил, что в моих службах WCF, когда я генерирую исключение (обычное старое исключение), клиентский канал входит в состояние с ошибкой и должен быть прерван и создан заново, прежде чем я смогу сделать еще один вызов на этом канале. Все в порядке. Вот как это задумано. Я понял Поэтому я просто вызываю abort() и воссоздаю, если мне нужно сделать еще один вызов.
Однако сбой клиентского канала происходит только тогда, когда я использую привязку с включенной защитой. Когда я использую basicHttpBinding, я могу получить исключение на клиенте, а затем продолжать использовать объект ServiceClient, не сообщая мне, что он находится в "неисправном состоянии".
Кроме того, когда я отключаю защиту на wsHttpBinding или netTcpBinding, я могу повторно использовать канал после исключения.
Вопрос:
Какова безопасность привязки, которая делает его неисправным каналом, так что он непригоден для использования?
1 ответ
Это потому, что с помощью безопасности вы настраиваете безопасный сеанс. Когда вы выходите из этого сеанса, канал переходит в сбойное состояние, и вы должны прервать его и создать новый. С BasicHttpBinding сеанс не происходит.