在多个Web服务调用上重用SessionID

时间:2013-03-20 17:47:19

标签: reporting-services

我正在使用ReportExecutionService对象使用Render方法调用报告服务报告。我从Windows服务调用多次调用Web服务,加载多个参数的多个报告。

一切正常,但我想知道是否:

  1. 有没有办法通过重用从rs.ExecutionHeaderValue.ExecutionID属性获得的SessionId来提高流程性能?
  2. 如果第一个问题的答案是"是":如何在电话上重复使用SessionId?

1 个答案:

答案 0 :(得分:0)

有趣的问题,我将向您提供我在SSRS服务器跨多个平台和环境的斗争中发现的两点:

  1. SSRS速度的最大问题似乎来自于服务本身每12小时回收一次,我相信2008年和2012年。在此之前不确定。我所做的是创建'keep alive'服务调用,只需访问http://(servername)/ ReportServer的根目录并ping它以使其保持活动状态。如果在这段时间内没有活动,它往往会变慢。

  2. 我知道如果你冒险并且了解.NET,你可以尝试看看你是否可以多次生成报告或报告。基本上使用C#的过程直接在代码中调用SSRS的Web服务(我创建一个代理类来执行此操作),然后将报表加载到服务,参数,然后呈现它。您可以在灌输多个实例时将其加载多次。我从未尝试过,但在我尝试过的少数情况下,直接从代理中呈现报告的速度非常快。

  3. 此方法中有会话ID但我不确定会话是保留在报表呈现还是服务器的调用中。我猜测报告会呈现,但我从未测试过这个,因为我通常一次调用一个创建方法,而且它们的速度已经足够我的规格了。

    如果您有兴趣,请参阅#2的链接:Programmatically Export SSRS report from sharepoint using ReportService2010.asmx