Actuellement, j'écris une application client C# qui utilise le contrôle WinForms ReportViewer pour afficher les rapports d'un serveur distant.C# WinForms ReportViewer Problème de performance avec RefreshReport() et ServerReport.SetParameters()
J'ai des problèmes de performance avec le contrôle ReportViewer, pour être précis avec les 2 méthodes reportViewer.ServerReport.SetParameters() et reportViewer.RefreshReport() - ils ont tous deux prennent vraiment beaucoup de temps pour compléter et pas seulement sur le premier appel, mais sur chaque appel ultérieur aussi bien. SetParameters() prend 20 à 40 secondes (ils varient beaucoup dans le temps, certains exécutent l'événement très rapidement) et RefreshReport() est un peu plus rapide mais prend encore beaucoup de temps.
Je ne pense pas que le serveur est le coupable, comme le même rapport vu en utilisant le navigateur rend assez rapide, autour d'un deuxième sommet.
Le rapport en question n'a pas non plus d'importance.
Lorsque j'entre dans le processus et que je regarde la pile d'appels, je vois un appel à Socket.DoConnect.
Alors j'ai pensé que c'était une bonne raison de commencer à utiliser fiddler et je l'ai installé, désactivé la mise en cache et redémarré l'application pour voir quel appel prend autant de temps pour se connecter, mais le problème de performance était parti. En utilisant un proxy, j'ai la même performance que le webbrowser.
FYI: J'utilise l'authentification NTLM de la manière suivante: reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new NetworkCredentials() {...} Nom d'utilisateur =
Je n'ai pas une forte webbackground, donc je devinez ma question est: Qu'est-ce que cela devrait me dire/Que dois-je regarder? (Btw: Ajouter un violoniste à mon package d'installation n'est pas la solution que je recherche :))
Je suis reconnaissant pour les pointeurs.
Prenez soin,
-Martin
Ai-je raté quelque chose? S'il y a quelque chose de flou, je me ferai un plaisir d'élaborer. – mdk