我有一个 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 延迟后获得整个数据。
我认为这与报告服务无关,因为当我们使用报表运行的相同数据创建订阅时,只要报告需要并返回数据,则相同的报告工作正常。它不会引发超时异常。它只是在 2 分 4 秒左右停止工作,并且不返回任何数据。有人对此有任何想法吗?
提前谢谢。
本
找到了我的问题。原来 RS.Render() 正在调用一个 Web 服务,该服务本身有几个与之关联的超时。它返回是因为服务调用抛出超时,但它不知道如何传递异常,因此没有返回任何数据,也没有异常。