2

netTcpBinding と security mode="Message" および clientCredentialType="UserName" を使用して単純な WCF サービスを作成しました。有効なユーザー名とパスワードを渡すと、すべてが正常に機能し、希望どおりにセッションが確立されます。ただし、資格情報が間違っていると、try catch ブロックでクライアント アプリケーションでキャッチできませんが、例外がスローされます。誰かが同じ問題を抱えていましたか?これが私のカスタムバリデータです...

public class UserValidator : UserNamePasswordValidator
    {
        static int counter = 0;
        public override void Validate(string userName, string password)
        {
            ++counter;            
            Console.WriteLine(counter.ToString() + " " + DateTime.Now.ToShortTimeString());
            if (userName != "test" || password != "test")

                throw new FaultException("Bad username or password");

                //throw new SecurityTokenException();

        }
    }
4

2 に答える 2

1

なぜセキュリティトークンの例外をスローしないのですか?それがその目的です。その時点では、メッセージは送信されておらず、チャネルは開かれていないため、障害を取り戻すことはできません。

于 2009-09-20T21:18:03.320 に答える
0

クライアントとサーバー間のチャネルを設定するコードはありますか?もしそうなら、チャネルは正しく作成されていません-メッセージセキュリティと同様に、クライアントとサーバーはhadnshakeを実行する必要があり、両方ともセキュリティチャネルを開くための資格情報を提供します。これは、それ以上の通信を有効にする前に確立する必要があります。無効な資格情報が渡されると、チャネルの作成が停止する可能性があります。

于 2009-06-04T13:17:12.813 に答える