2009-07-20 15 views
0

カスタムUserNamePasswordValidatorとメッセージセキュリティがwsHttpBindingで実行されていることを保証するWCFサービスがあります。リリースコードは素晴らしい作品です。残念ながら、以前に無効な資格情報を使用した後にデバッグモードで実行しようとすると(現在の資格情報が有効です!)VS2008は迷惑なダイアログボックスを表示します(詳細は後述)。UserNamePasswordValidatorフォールトの後にVS2008でWCFサービスをデバッグできません。

バリデータからの私のValidateメソッドの簡易版は、次のようになります。

​​

クライアントは、私は明示的に投げFaultExceptionに設定のInnerExceptionとMessageSecurityExceptionを受けます。これは、私のクライアントが元のFaultExceptionのメッセージテキストを表示できるので、ユーザが見たいと思っていたので実行可能です。

残念なことに、その後のすべてのサービスコールでは、VS2008は「自動的にデバッグできません...」ダイアログを表示します。私がこれを止めることができる唯一の方法は、VS2008を終了して、戻って正しい資格情報を使ってサービスに接続することです。また、これは、すべての呼び出しごとに新しいプロキシを作成した場合でも発生します。電話をすると、私のチャンネルにフォールトが発生することはありません。しかし、VS2008は以前にフォルトが発生したチャネルにハングアップし、デバッグの目的でそのチャネルを使用しようとします。

言うまでもなく、これは吸う!私が「悪い」資格情報を入力する理由は、「悪い資格」の処理をテストすることです。とにかく

、誰もが私はこのバグを回避する方法についてどのような考えを持っている場合(?!?)私は非常に非常に感謝するだろう....

+0

あなたのサービスがユーザーに表示されるメッセージを含むフォールトを返すようにして、あなたのUIに。また、実際には、パスワードが無効であると伝えることによって、ユーザー名が有効であることをハッカーに伝えないでください。 「ユーザー名またはパスワードが無効です」と言ってください。 –

+0

プロキシをどのようにクリーンアップしているか説明できますか? また、完全に無関係ですが、例外を使用して戻り値を伝播するのは一般的には良い考えではありません。特別なユーザー名/パスワードを入力しないだけでなく、例外的な状況のために例外を予約する必要があります。 –

答えて

0

私は問題があることを考え始めていますプロキシクロージャと関係がある。私はちょうどMichele Leroux Bustamante(http://wcfguidanceforwpf.codeplex.com)の素晴らしいWCFビデオセットを見ました。私のクライアントコードに問題があるかもしれないと思いました。私は今日それを行って、それがどのように戻ってきたかを報告します。

+0

OK、私はついに何が起こっているのか把握しました。基本的には、タイムリーにクライアント側のプロキシを閉じない(つまり、プロキシをガベージコレクションで閉じさせる)ことに問題がありました。問題の良い解決策については、http://wcfproxygenerator.codeplex.comを参照してください... –

関連する問題