超文本传输协议(HTTP)是一种无连接和无状态协议,这意味着它不会自动指示不同请求来自同一客户端,甚至单个浏览器实例是否仍在主动查看页面或站点。 会话创建一个逻辑连接,用于通过 HTTP 维护服务器和客户端之间的状态。 与特定会话相关的用户特定信息称为会话状态。
会话管理涉及将 HTTP 请求与从同一会话生成的其他以前的请求相关联。 如果没有会话管理,这些请求就与报表服务器 Web 服务无关,因为 HTTP 协议的无连接性和无状态性质。
Reporting Services 不会公开会话状态的整体概念,例如由 ASP.NET 公开的概念。 但是,在执行报表时,报表服务器以 执行的形式在方法调用之间保持状态。 执行允许用户以多种方式与报表进行交互-包括从报表服务器加载报表、设置报表的凭据和参数以及呈现报表。
在与报表服务器通信时,客户端使用执行来管理报表查看和用户导航到报表中的其他页面,以及显示或隐藏报表的各个部分。 客户端应用程序正在运行的每个报表都存在唯一的执行。
通常,执行生存期在用户导航到浏览器或客户端应用程序并选择要查看的报表时开始。 在收到对执行的最后一个请求(默认超时为 20 分钟)后,将放弃执行。
从 Web 服务的角度来看,在调用报表服务器 Web 服务LoadReportLoadReportDefinition或Render方法时开始生存期。 应用程序可以使用其他方法来作活动执行(例如设置参数和设置数据源)。 在收到对执行的最后一个请求(默认超时为 20 分钟)后,将放弃执行。
应用程序通过保存 ExecutionIDSOAP 标头中返回LoadReportDefinitionLoadReport的方法来跟踪对 Web 服务和RenderRenderStream方法的调用之间的多个活动执行。
下图显示了报表的处理和呈现路径。
为了支持上述函数,当前 SOAP Render 方法已拆分为多个方法,包括执行初始化、处理和呈现阶段。
若要以编程方式呈现报表,必须:
使用 LoadReport 或 LoadReportDefinition. 加载报表或报表定义。
检查报表是否需要凭据或参数,方法是检查由LoadReport或返回的对象的值CredentialsRequired和属性ExecutionInfoParametersRequiredLoadReportDefinition
如有必要,请使用 SetExecutionCredentials 和 SetExecutionParameters 方法设置凭据和/或参数。
Render调用该方法来呈现报表。
当报表处于会话中时,存储在报表服务器数据库中的基础报表可能会更改。 例如,报表定义可以更改,可以删除或移动报表,用户可以更改权限。 如果报表位于活动会话中,则不受对基础报表所做的更改(即存储在报表服务器数据库中的报表)的影响。
还可以使用 URL 访问命令管理报表会话。