WCF - Adapter le maxReceivedMessageSize en fonction du message!
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 :
Code:
1 2 3
|
[OperationContract]
MemoryStream GetStream(); |
Et ce memoryStream peux etre de taille variable.
Lors de mes tests j'ai eu droit à la petite erreur :
Citation:
Le quota de taille maximale autorisée pour les messages entrants (65536) a été dépassé
J'ai donc augmenté la taille du MaxReceivedMessageSize, et tout est ok!
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!!!!!!!) :
Code:
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(); |
Merci d'avance.