Bonjour,

J'essaye d'envoyer des données de taille importantes( > 50Mo) via WCF en wsDualHttpBinding. Malheureusement je n'y arrive pas malgré le paramètrage des variables du genre maxReceivedMessageSize,... Je décrit ci-desous ma manip en détail. Merci d'avance pour votre aide.


J'ai définit un endpoint qui utilise un binding wsDualHttpBinding avec la configuration suivante:

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
<binding 
  name="wsDualHttpBindingConfig" 
  closeTimeout="00:01:00" 
  receiveTimeout="00:01:00"
  sendTimeout="00:01:00" 
  bypassProxyOnLocal="false" 
  maxBufferPoolSize="52428800"
  maxReceivedMessageSize="2147483647" 
  useDefaultWebProxy="true">
  <readerQuotas
    maxDepth="32"
    maxStringContentLength="52428800"
    maxArrayLength="2147483647"
    maxBytesPerRead="8192"
    maxNameTableCharCount="16384" />
  <reliableSession
    inactivityTimeout="00:01:00" />
  <security mode="None" />
</binding>
Mon client WCF appelle le contrat "ReadServiceTEST" qui lui renvoie un tableau de 12580000 Bytes ( 12.58Mo ).

Voir le code du serveur WCF ci-dessous:

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 interface MonInterfaceWCF
{     
        [OperationContract]
        [Extensions.NetDataContractAttribute]
        Byte[] ReadServiceTEST();
}


public class MaClasse: MonInterfaceWCF
{
  public Byte[] ReadServiceTEST()
  {
            int MaxSize= 12580000;// 12.58Mo

            Byte[] result = new Byte[MaxSize];

            for (int i = 0; i < MaxSize; i++)
            {
                result[i] = Byte.MaxValue;
            }
            return result;
  }
}
Le client WCF récupère bien ce tableau de Byte si MaxSize = 12580000,
mais plus si MaxSize = 12590000;// 12.59Mo!!!Le comportement que j'observe est que le tableau de Byte est bien renvoyé côté serveur, mais le client qui est en attente active sur l'appelle de la méthode ReadServiceTEST récupère une exception de type timeout au bout d'1 min d'attente.
En activant les traces WCF côté serveur, j'obtient le message suivant:

Une erreur s’est produite lors de la demande HTTP à http://MonPC:1565/ed991dbd-6673-42f0-8b22-4590af8bbe7e. Cela peut être dû au fait que le certificat de serveur n’est pas configuré correctement avec HTTP.SYS pour HTTPS. Une autre raison possible est une non-correspondance de la liaison de sécurité entre le client et le serveur.
Si quelqu'un à des suggestions...