2009-05-13 8 views
3

http://msdn.microsoft.com/en-us/library/system.identitymodel.selectors.usernamepasswordvalidator.aspxのUserNamePasswordValidatorサンプルによれば、ユーザー名またはパスワードが間違っている場合はSecurityTokenExceptionを投げるべきです。これは正常に動作しますが、代わりにSecurityTokenExceptionが発生します。私はMessageSecurityExceptionを取得しています。私が渡しているテキストメッセージはどこかで失われています。私は "不具合の詳細"を送っていません。WCF UserNamePasswordValidatorからSecurityTokenExceptionを正しくキャッチ

これらのエラーを正しくキャッチする方法はありますか?私は自分でいくつかのことを試してみて、それが正しいかどうかを見ます。

答えて

6

クイック検索(前ならば、なぜ、私は見ませんでした...)、私は疑問に提供されたリンクは、それが最初のサンプルとは多少違う、とについてのコメントを持っているhttp://msdn.microsoft.com/en-us/library/aa702565.aspx

で別のサンプルを指摘しましたメッセージの詳細を提供する場合は、SecurityTokenExceptionの代わりにFaultExceptionを使用します。

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"); 
    } 
} 

クライアントで検出された例外には、FaultException型の内部例外が表示され、公開するテキストメッセージが含まれています。

関連する問題