Аутентификация WCF UserName и контракты отказа

Мне настроили сервис WCF для использования пользовательской проверки UserName через переопределенный, Проверяют () метод Системы. IdentityModel. Селекторы. Класс UserNamePasswordValidator.

Все методы контракта были украшены FaultContractAttribute для определения пользовательского отказа SOAP, как являющегося подлежащим возврату.

При броске FaultException <T>, где T является типом, указанным в FaultContractAttribute, все ведет себя как ожидалось, и я получаю пользовательский отказ в ответе XML.

Однако, если я пытаюсь бросить FaultException <T> в переопределенный, Проверяют () метод класса аутентификации имени пользователя, я получаю универсальный отказ SOAP со следующей причиной:

"Создатель этого отказа не указывал Причину".

Однако, если я изменяю код для броска общего отказа SOAP как в:

throw new FaultException("Authentication failed.");

Я, по крайней мере, получу "Отказавшую аутентификацию". в причине элемент.

Мои вопросы:

  • Почему исключения FaultException <T> не рассматривают то же, если они добавляются Проверение (), как они в рамках реализации услуги?
  • Действительно ли возможно иметь исключения, добавленные Проверение (), метод соответствует FaultContractAttribute, указанному на методах контракта?

Любая справка значительно ценится. Мое собственное предположение - то, что аутентификация происходит, прежде чем сообщение связано с любым методом контракта, и поэтому, не связано с FaultContractAttribute, но любой статьей, подтверждающей, что это и дающий обходное решение было бы очень полезно.

Таранные кости

6
задан Tali Walker 24 August 2009 в 14:28
поделиться