У меня есть служба WCF, подключенная к UserNamePasswordValidator через мой web.config, никаких проблем там нет. В моем валидаторе я переопределяю Validate, проверяю учетные данные и при необходимости выкидываю FaultException.
Пример:
public class CredentialValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "dummy")
{
throw new FaultException<AuthenticationFault>(new AuthenticationFault(), "Invalid credentials supplied");
}
}
}
Если я сам использую эту службу в приложении .NET и предоставляю неверные учетные данные, выдается исключение MessageSecurityException со следующим сообщением:
"Необеспеченная или неправильно защищенная ошибка была получена от другой стороны. См. Внутреннее исключение FaultException для получения кода ошибки и подробностей."
Исключение FaultException, которое я ожидал, - это исключение InnerException для MessageSecurityException.
Есть ли способ, чтобы клиент получил только FaultException?
MessageSecurityException не особенно описывает истинную причину исключения (быстрый поиск по SO приводит к множеству проблем, включая синхронизацию времени сервер / клиент ...), и поскольку третья сторона будет использовать эту службу, я хотелось бы быть максимально четким.