Мне настроили сервис WCF для использования пользовательской проверки UserName через переопределенный, Проверяют () метод Системы. IdentityModel. Селекторы. Класс UserNamePasswordValidator.
Все методы контракта были украшены FaultContractAttribute для определения пользовательского отказа SOAP, как являющегося подлежащим возврату.
При броске FaultException <T>, где T является типом, указанным в FaultContractAttribute, все ведет себя как ожидалось, и я получаю пользовательский отказ в ответе XML.
Однако, если я пытаюсь бросить FaultException <T> в переопределенный, Проверяют () метод класса аутентификации имени пользователя, я получаю универсальный отказ SOAP со следующей причиной:
"Создатель этого отказа не указывал Причину".
Однако, если я изменяю код для броска общего отказа SOAP как в:
throw new FaultException("Authentication failed.");
Я, по крайней мере, получу "Отказавшую аутентификацию". в причине элемент.
Мои вопросы:
Любая справка значительно ценится. Мое собственное предположение - то, что аутентификация происходит, прежде чем сообщение связано с любым методом контракта, и поэтому, не связано с FaultContractAttribute, но любой статьей, подтверждающей, что это и дающий обходное решение было бы очень полезно.
Таранные кости