J'ai déjà observé ce message mais je ne pense pas que c'était la même cause - le "n'a pas exécuté" est une erreur RPC générique qui peut être causée par beaucoup de choses.
Dans notre cas particulier, c'était parce que nous martelions WMI trop fort et ne nettoyions pas nos objets. Mais il semble que ce soit une cause différente dans votre cas.
Je sais que vous avez dit que vous ne souhaitiez pas raccourcir le paramètre mais que cela pourrait être la seule solution pour vous. J'ai du mal à visualiser les circonstances dans lesquelles vous devez envoyer 6M à travers un appel RPC. Peut-être que si vous expliquez les raisons derrière cela, nous pouvons vous aider plus loin.
Autres possibilités en fonction des commentaires à ce jour:
1/Segmentation. Les appels RPC limitent la quantité de données qui transitent sur le réseau
Cela peut être fait en segmentant le message à la source et en le reconstruisant à la destination, comme avoir trois paramètres (le serveur peut distribuer des identifiants de message dans un autre appel RPC ou trouver un autre moyen de s'assurer que deux clients n'ont pas le même ID): - un identificateur de message (pour lier ensemble des segments de message). - un dernier drapeau (pour commencer le processus de reconstruction). - un segment de taille limitée (par exemple, 1M).
2/Compression.
Puisque XML est du texte, il est mûr pour la compression. Les bibliothèques 7zip sont les meilleures que j'ai vues en termes de réduction de taille. Si cela serait assez rapide est une autre question.
3/ Correction possible en modifiant le Registre.
Consultez la zone de registre HKLM/Software/Microsoft/Rpc pour la clé RpcMaxSize. Il y a quelques sites que j'ai googlé qui suggèrent de régler ceci à -1 pour supprimer les limitations de taille (globalement, alors faites attention).
4/Correction lors de l'enregistrement de votre interface.
Vous pouvez apparemment obtenir le même effet que (3) sur une interface spécifique avec RpcServerRegisterIf2()
.
actuelle La raison en est que nous envoyons une représentation XML d'objets énormes et ne veulent pas penser à l'optimiser (mais c'est certainement possible). Donc, s'il existe un moyen simple de contourner le problème, ce serait très pratique. – sharptooth
Eh bien, la segmentation est une possibilité: limitez vos paramètres à un ID de session, un dernier indicateur et (par exemple) 1M de texte. Vous devrez segmenter votre code XML à la source et le reconstituer à la destination. Pas mon premier choix mais une solution rapide et sale qui devrait fonctionner avec un minimum d'effort. – paxdiablo
Oui, cela fonctionnerait et c'est facile, mais une solution sans effort (le cas échéant) serait plus pratique. Lazyness, vous savez ... – sharptooth