根据http://msdn.microsoft.com/en-us/library/system.identitymodel.selectors.usernamepasswordvalidator.aspx上的UserNamePasswordValidator示例,如果用户名或密码错误,则应抛出SecurityTokenException.这工作正常,但不是得到SecurityTokenException我得到一个MessageSecurityException和我传递的文本消息在某处丢失.我不是在发送"故障细节".
任何想法如何正确捕捉这些错误?我自己会尝试一些事情,看看能否做到.
快速查找(为什么我之前没有看到...),我在问题中提供的链接指向http://msdn.microsoft.com/en-us/library/aa702565.aspx上的另一个示例
它与第一个示例有些不同,并且如果要提供消息详细信息,则有关于使用FaultException而不是SecurityTokenException的注释.
public override void Validate(string userName, string password)
{
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
if (!(userName == "test1" && password == "1tset") && !(userName == "test2" && password == "2tset"))
{
// This throws an informative fault to the client.
throw new FaultException("Unknown Username or Incorrect Password");
// When you do not want to throw an infomative fault to the client,
// throw the following exception.
// throw new SecurityTokenException("Unknown Username or Incorrect Password");
}
}
Run Code Online (Sandbox Code Playgroud)
客户端上捕获的异常现在包含一个FaultException类型的内部异常,其中包含我想要公开的文本消息.
| 归档时间: |
|
| 查看次数: |
3079 次 |
| 最近记录: |