私はこの件に関して決定的な答えを見出すことができます。私は、クライアントプロキシでusing(){}問題を認識しています。しかし、私たちは私たちのサービスから返されたすべての例外を食べているクライアントを持っています。例外が発生した後、クライアントはもうサービスと通信できません(私たちのサービストレースでは結果は得られません)。クライアントはWebアプリケーション(.NET 3.5)です。誰もこの行動を経験していますか?WCF basicHttpBindingサービスのクライアントプロキシでClose()/ Abort()を呼び出す必要がありますか?
public static bool ValidateDigitalSignatureCredentials(string barNumber, string PIN)
{
UserInfo userTicket = JTAC.INcite.Framework.Security.Authentication.CurrentUser;
DigitalSigning.DigitalSignatureClient client = null;
bool validSigning = false;
try
{
client = new DigitalSigning.DigitalSignatureClient();
client.ClientCredentials.UserName.UserName = "foo";
client.ClientCredentials.UserName.Password = "bar";
validSigning = client.VerifyCredentials(barNumber, PIN);
if (client.State != CommunicationState.Faulted)
{
client.Close(); // (timeout);
}
else
{
client.Abort();
}
}
catch (CommunicationException)
{
client.Abort();
}
catch (TimeoutException)
{
client.Abort();
}
return validSigning;
}
クライアントステータスを確認します。フォールト状態ですか?それが再び開かれている場合。 – Asdfg
あなたのクライアントをICommunicationObjectにタイプキャストして、まだタイムアウトしているかどうかを確認してください。また、フォールト状態になっている場合は、終了するよりもAbortを呼び出すことをお勧めします。それは確かではありません。 – Asdfg
Visual Studioデバッガで "すべての例外を無効にする"を有効にして、例外が発生していることを正確に確認できます。ここでは、たとえば、クライアントが無効になる原因となっている他の種類の例外があるかどうか疑問に思っています。 –