'Custom-Username-Password-Validator'を実装するWCFサービスがあります。
サービス自体は、ユーザー名とパスワードをローカルファイルと照合します。
一致するものがない場合は、メッセージとともにFaultExceptionがスローされます。
。
サービスを同期的に使用すると、正常に動作します。
ASYNCを使用する場合、問題が発生します。
間違った「ユーザー名+パスワード」の資格情報を渡してクライアントを開くと、
'Channel_Faulted()'メソッドに入るサービスからすぐに戻る代わりに、
クライアントスレッドは、タイムアウトがトリガーされるまで待機します。
次に、「TimeoutException」が発生します。
try
{
client = new MyServiceClient("WSDualHttpBinding_IMyervice");
client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "bad password";
client.ChannelFactory.Faulted += new EventHandler(ChannelFactory_Faulted);
client.Open(); // This hangs for 01:00:00 minute
// Doesn't reach here
client.DoSomethingCompleted += new EventHandler<DoSomethingEventArgs(client_DoSomethingCompleted);
client.DoSomethingAsync(param);
}
catch (Exception ex)
{
// Enters here with a 'TimeoutException' exception
}
クライアントが私が持っている「Faulted」メソッドをトリガーしないのはなぜですか?
「CustomUserNameValidator」の「Validate」メソッド中に「FaultException」を介してサービスを実行しているのに、サービスからの応答を待機するのはなぜですか?