gpt4 book ai didi

使用 RefreshReport() 和 ServerReport.SetParameters() 的 c# WinForms ReportViewer 性能问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:21 24 4
gpt4 key购买 nike

目前我正在编写一个 c# 客户端应用程序,它使用 WinForms ReportViewer 控件来显示来自远程服务器的报告。

我在使用 ReportViewer 控件时遇到了性能问题,具体来说是 reportViewer.ServerReport.SetParameters()reportViewer.RefreshReport() 两种方法——它们都是需要很长时间才能完成,不仅在第一次调用时,而且在随后的每次调用中也是如此。SetParameters() 需要 20 到 40 秒(它们在时间上差异很大,一些执行事件还可以很快)并且 RefreshReport() 快一点但仍然需要很长时间。

我不认为服务器是罪魁祸首,因为相同的报告 使用浏览器呈现得非常快,大​​约是第二个顶部。

有问题的报告也无关紧要。

当我进入进程并查看调用堆栈时,我看到了对 Socket.DoConnect 的调用。
所以我认为这是开始使用 fiddler 的一个很好的理由,我安装了它,禁用缓存并再次启动应用程序以查看哪个调用需要那么长时间才能连接,但性能问题已经消失。通过使用代理,我获得了与网络浏览器相同的性能。

仅供引用:我通过以下方式使用 NTLM 身份验证:reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new NetworkCredentials() { Username = ... }

我没有很强的网络背景,所以我想我的问题是:这应该告诉我什么/我应该调查什么?(顺便说一句:将 fiddler 添加到我的安装包并不是我正在寻找的解决方案:))

非常感谢任何指点。

保重,
-马丁

最佳答案

重新启动服务器至少解决了几天的问题。

我注意到服务器上的事件日志中有一些错误,IIS 管理控制台需要很长时间才能启动并且无法连接到本地 iis,所以我在网上搜索并找到了 http://support.microsoft.com/?id=946517与事件日志中的错误匹配。

请求并安装修补程序后,kb 文章中描述的错误消失了,从那时起,报告在报告查看器和浏览器中正常加载。

我不确定 reportviewer 和浏览器之间的确切区别是什么,但我还没有再次遇到这个问题。

关于使用 RefreshReport() 和 ServerReport.SetParameters() 的 c# WinForms ReportViewer 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com