J'ai créé un simple service wcf hébergé dans un client IIS et wcf et ai compris que lorsque vous attrapez une exception FaultException du service wcf, puis appelez le client. Abort() pour libérer la session (comme les microsoft dit les échantillons) il ne libère pas la session et raccroche au 11ème appel.La méthode Abort() du proxy client wcf ne libère pas la session après avoir intercepté FaultException
Voici par exemple:
WCF Service:
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
}
public class Service1 : IService1
{
public string GetData(int value)
{
throw new FaultException("Exception is here");
return string.Format("You entered: {0}", value);
}
}
Client:
class Program
{
static void Main(string[] args)
{
Service1Client client = null;
for(int i = 0; i < 15; i++)
{
try
{
client = new Service1Client();
client.GetData(100);
}
catch (TimeoutException timeoutEx)
{
Console.WriteLine(timeoutEx);
client.Abort();
}
catch (FaultException faultEx)
{
Console.WriteLine(faultEx);
client.Abort();
}
catch (CommunicationException commEx)
{
Console.WriteLine(commEx);
client.Abort();
}
}
}
}
Mais si vous remplacez le client.Abort() avec client.Close() pour catch (FaultException) alors tout fonctionne comme un charme et il n'y a pas de verrouillage après le 11ème appel de la wcf méthode de service Pourquoi cela pourrait-il être? Pourquoi la méthode Abort() ne nettoie pas la session après que FaultException a été interceptée?
Est-ce que vous venez de copier collé d'ici? http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/f86c056a-4027-453a-a46c-fc223e03589b/ – oleksii