ReportExecution2005.ReportExecutionService.Render()在大约2分钟后返回,没有数据

时间:2012-06-07 15:12:12

标签: timeout reportingservices-2005

我有一个c#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()方法返回时没有数据。我期望在存储的proc延迟之后得到整个数据。

我认为这与Reporting Services无关,因为只要需要并且返回数据,当我们使用报表运行的相同数据创建订阅时,同一报表工作正常。它没有抛出超时异常。它通常在2分4秒内停止工作,并且不返回任何数据。有人对此有任何想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

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