【问题标题】:c# WinForms ReportViewer Performance issue using RefreshReport() and ServerReport.SetParameters()c# WinForms ReportViewer 使用 RefreshReport() 和 ServerReport.SetParameters() 的性能问题
【发布时间】:2011-01-17 11:23:45
【问题描述】:

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

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

我不认为服务器是罪魁祸首,因为相同的报告查看使用浏览器呈现非常快,大​​约一秒。

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

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

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

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

感谢任何指点。

保重,
-马丁

【问题讨论】:

  • 我错过了什么吗?如果有不清楚的地方,我很乐意详细说明。

标签: c# winforms reportviewer


【解决方案1】:

重启服务器至少可以解决几天的问题。

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

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

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

【讨论】:

    猜你喜欢
    • 2012-02-28
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多