2010-09-16 7 views
1

J'essaie d'obtenir un canal de communication nommé WCF entre deux processus sur le même ordinateur (sous XP), mais je rencontre des problèmes avec la disparition des messages «volumineux». Les messages qui disparaissent contiennent un tableau d'octets volumineux et j'ai réduit l'échec jusqu'à ce que la taille du tableau soit d'environ 16 Ko. Plus petit que cela et le message passe à travers. Plus grand que cela et l'expéditeur dit que ça s'est bien passé mais il n'est jamais reçu. Je l'ai essayé cognant les tailles de tampon sur l'émetteur et le récepteur par ce code pour le serveur:WCF Problèmes de taille de message de tube nommés

PipeServer pipeServer = new PipeServer(); 

ServiceHost serviceHost = new ServiceHost(pipeServer, new Uri[] { new Uri(baseName) }); 

NetNamedPipeBinding netNamedPipeBinding = new NetNamedPipeBinding(); 
netNamedPipeBinding.MaxBufferPoolSize = 5000000; 
netNamedPipeBinding.MaxBufferSize = 500000; 
netNamedPipeBinding.MaxReceivedMessageSize = 500000; 

serviceHost.AddServiceEndpoint(typeof(ISSNPipeServer), netNamedPipeBinding, pipeName); 

et ce code pour le client:

_callbacks = new PipeClientCallbacks(); 

NetNamedPipeBinding netNamedPipeBinding = new NetNamedPipeBinding(); 
netNamedPipeBinding.MaxBufferPoolSize = 5000000; 
netNamedPipeBinding.MaxBufferSize = 500000; 
netNamedPipeBinding.MaxReceivedMessageSize = 500000; 

_pipeFactory = new DuplexChannelFactory<ISSNPipeServer>(_callbacks, 
        netNamedPipeBinding, 
        new EndpointAddress(_targetPipe)); 

_pipeProxy = _pipeFactory.CreateChannel(); 

Je suis finalement cherche à transférer des tableaux dans la taille de 60KB, mais c'est ma première expérience sérieuse de WCF et je n'ai aucune idée même où vraiment commencer à regarder.

Répondre

1

Vous pouvez activer WCF tracing sur le serveur pour obtenir plus d'informations sur la nature de l'incident. Vous avez probablement besoin d'augmenter les quotas de lecteurs associés à la liaison (NetNamedPipeBinding.ReaderQuotas). Vérifiez le MaxArrayLength en particulier.

+0

Ce paramètre de longueur de tableau maximum est très suspect avec une valeur par défaut de 16384. Mais s'il vous plaît humour et suggérer où je cherche à changer cela. Pour une raison quelconque, je pensais aussi que les tuyaux nommés sur la même boîte sont allés via xml –

+0

Yep .. qui l'a réparé. Merci –

Questions connexes