Bonjour à tous,
Je fais mes premiers pas avec WCF et j'aimerais avoir un petit renseignement.
Pour résumer j'ai un service du style :
Et ce memoryStream peux etre de taille variable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [OperationContract] MemoryStream GetStream();
Lors de mes tests j'ai eu droit à la petite erreur :
J'ai donc augmenté la taille du MaxReceivedMessageSize, et tout est ok!Le quota de taille maximale autorisée pour les messages entrants (65536) a été dépassé
Cependant y'a-t-il des risques à configurer une liaison avec des messages max de 10Mo si la plupart de ces derniers n'en font qu'un seul?
Et si un jour mon appli renvoi un stream de plus de 10Mo? Y-a-t-il une méthode pour anticiper et adapter cette taille de message. Par exemple modifier le maxReceivedMessageSize à l'aide d'une méthode qu'on appellerai avant et qui renvoi la taille du Stream. Je propose ça, car c'est ce que j'ai essayer dans mon code mais sans résultat (et puis ça n'a pas l'air très propre de changer le binding du endpoint comme ca!!!!!!!) :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //class qui implemente IServiceWCF coté serveur ServiceWCF proxy = new ServiceWCF("BasicHttpBinding_IServiceWCF"); long msgSize = proxy.GetStreamSize(); BasicHttpBinding myBinding = new BasicHttpBinding("BasicHttpBinding_IServiceWCF"); myBinding.MaxReceivedMessageSize = msgSize; proxy.Endpoint.Binding = myBinding; MemoryStream theStream = proxy.GetStream();
Partager