0

我有一个 ac# web 应用程序,它接受用户的请求并通过 RS2005 将 SQL Server 中的数据导出到 Excel。代码如下所示:

ReportExecution2005.ReportExecutionService rsExec = new ReportExecution2005.ReportExecutionService();

// set all params here...

rsExec.Timeout = 1800000;  //30 mins

s.Start(); // stopwatch start
result = rsExec.Render(format, null, out extension, out encoding, out mimeType, out warnings, out streamIDs);
s.Stop();// stopwatch stop

问题是,当请求花费超过 2 分钟(模拟我的存储过程中有“等待延迟 '00:04:00'”)时,.Render() 方法在 2 分钟后返回,没有数据。我传入的参数有有效数据,因为当我删除存储过程中的延迟时,数据会返回。但是当我添加延迟时,Render() 方法返回时没有数据。我希望在存储过程延迟后获得全部数据。

我认为这与 Reporting Services 无关,因为当我们创建具有相同数据的订阅时,该报告会根据需要运行并返回数据,因此相同的报告可以正常工作。它不会引发超时异常。它通常会在 2 分 4 秒左右停止工作,并且没有返回数据。有人对此有任何想法吗?

提前致谢。

4

1 回答 1

0

发现了我的问题。事实证明,RS.Render() 正在调用一个 Web 服务,该服务本身有几个与之相关的超时。它正在返回,因为服务调用引发了超时,但它不知道如何传递异常,因此没有返回数据,也没有异常。

于 2012-06-08T19:13:31.647 回答