2

我们在 ASP.NET 页面上有 VS 2005 版本的 ReportViewer 控件。报告针对 SQL2008 报告服务执行并正确显示。我们对按预期工作的列进行了交互式排序......通常。

在较大的结果集(超过 100 页)上,排序停止,在查看器中显示白色背景,并带有“操作已超时”字样。具有讽刺意味的是,它在大约 3 秒内完成了这项工作。当我看到 ServerReport.Timeout 默认为 2000 毫秒时,我以为我已经做到了,但是将其更改为 30,000 毫秒并没有什么不同。就好像它甚至没有意愿尝试对那么多数据进行排序:) 这是代码:

        var rvMain = new ReportViewer {
            EnableViewState = true,
            ProcessingMode = ProcessingMode.Remote,
            ShowRefreshButton = false,
            AsyncRendering = true,
            ShowCredentialPrompts = false,
            ShowDocumentMapButton = true,
            DocumentMapCollapsed = true,
        };
        rvMain.ServerReport.DisplayName = displayName;
        rvMain.ServerReport.ReportPath = reportPath;
        rvMain.ServerReport.Timeout = 30000;

我查看了许多其他关于各种超时的帖子。但是,这仅在排序时发生,并且仅在大型结果集上发生。任何建议,将不胜感激!!

更新:对直接在 SQL 报告管理器网站中运行的报告进行排序时,排序不会超时。

4

1 回答 1

2

看起来我们已经进入了这个。我们实现 IReportServerConnection2 1 是因为我们没有使用会话状态并且我们想要控制用于连接到报告服务的凭据。在那个接口实现中,我们有一个不寻常的默认值 2000 毫秒。因此,在交互式排序发生的往返行程中,它使用的是该默认值,而不是在初始 ReportViewer 创建时设置的值。显然在 IReportServerConnection2 的实现中提高 Timeout 的值修复了它。

于 2009-11-23T20:26:29.617 回答