Bonjour,

J'utilise actuellement le WCF (netTcpBinding) entre 2 des mes application et il arrive que mon client soit en Timeout à cause de son inactivité.

De ce fait avant d'utiliser une fonction du service je vérifie que la connection est bien ouverte entre le client et le serveur, grâce à mon accesseur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static BuildingServiceClient WCF_Building
        {
            get
            {
                if (wcf_Building.State != CommunicationState.Opened)
                {
                    try
                    {
                        wcf_Building.Close();
                    }
                    catch
                    {
                        wcf_Building.Abort();
                    }
                    finally
                    {
                        wcf_Building = new BuildingServiceClient();
                        wcf_Building.Open();
                    }
                }
                return wcf_Building;
            }
        }
Une fois le channel réouvert, j'essai d'utiliser une fonction du service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
string name = WCF_Building.GetName();
mais j'ai systématiquement l'erreur :

La connexion de socket a été abandonnée. Ceci peut être causé par une erreur lors du traitement de votre message, par le dépassement du délai d'attente de réception par l'hôte distant ou par un problème de ressource réseau sous-jacent. Le délai d'attente de socket local était '00:00:59.9989992'.
Voici le binding coté client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<binding name="NetTcpBinding_IBuildingService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                    maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="None">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>
Si quelqu'un a une idée pour rétablir la connexion, car ma méthode n'a pas l'air de suffire.