如何告诉用户他从客户用户名密码验证器输入了错误的凭据

时间:2016-05-20 17:41:57

标签: c# wcf

我有一个带有自定义用户名密码验证程序的安全WCF服务。经过相当大的努力,一切都终于开始了。我只有最后一个问题。每当我抛出异常以表示用户的登录凭据不正确时,它就会转换为MessageSecurityException,并显示消息“附加信息:从另一方收到了一个不安全或不正确安全的故障。请参阅内部FaultException以获取故障代码和细节“。

如果我最初抛出FaultException,内部异常将包含我打算让消费者查看的消息(“Unknown Username或Incorrect Password”)。如果抛出任何其他类型的异常,则内部异常实际上只是非描述性通用外部异常的副本。

我真的希望顶级异常包含“未知用户名或密码不正确”消息。我甚至尝试使用所需的消息抛出我自己的MessageSecurityException,甚至不起作用。有谁知道如何知道如何从我的验证器抛出异常,以便外部异常包含我希望消费者看到的消息?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用故障合同来传播故障,如果没有,那可能是您的问题。 MessageSecurityException很可能是由WCF生成的,因为它是CommunicaitonException,它是使用WCF时的例外异常之一。此question中提到了几种可能的原因。

但是,我建议您重新考虑使用例外来处理无效的用户名/密码。许多人遵循仅针对特殊情况使用例外的做法,并且在这种情况下无效的用户名/密码绝对不例外。也许最好使用错误消息传回bool或字符串。