日期:2014-05-17  浏览次数:20559 次

SSRS加外壳问题,如何获取发布到SSRS服务器上的报表的路径?
如题,如何获取发布到SSRS服务器上的报表的路径?想自已做一个登录界面,登录后,把报表名称重新组织一一个树上,点树的节点,对应一个SSRS上报表路径,如何获取到已发布报表的路径?
------解决方案--------------------
讲个大体思路,如果有对报表管理器的database 有访问权限的话,那么在报表管理器的database 中找个到表
[ReportServer$DBINstanceName].[dbo].[Catalog],跟据这个表的数据parentID,path等字段内容生成上下层的树结构。 至于路径那么就需要catalog中的path字段数据和报表管理器的地址来拼接。 也就是一些字符串替换拼接的工作。
比如
http://localhost:8080/Reports/Pages/Folder.aspx?+拼凑好报表地址。

SELECT TOP 1000 [ItemID]
      ,[Path]
      ,[Name]
      ,[ParentID]
      ,[Type]
      ,[Content]
      ,[Intermediate]
      ,[SnapshotDataID]
      ,[LinkSourceID]
      ,[Property]
      ,[Description]
      ,[Hidden]
      ,[CreatedByID]
      ,[CreationDate]
      ,[ModifiedByID]
      ,[ModifiedDate]
      ,[MimeType]
      ,[SnapshotLimit]
      ,[Parameter]
      ,[PolicyID]
      ,[PolicyRoot]
      ,[ExecutionFlag]
      ,[ExecutionTime]
      ,[SubType]
      ,[ComponentID]
  FROM [ReportServer$DBINstanceName].[dbo].[Catalog]


------解决方案--------------------
 ////报表服务器webservice操作类
                ReportingService2010 _rs = new ReportingService2010();          //负责管理服务器的接口
 _rs.Credentials = new System.Net.NetworkCredential(reportViewerUserName, reportViewerPassword, reportViewerDomain);
  _rs.Url = String.Format("{0}/{1}", Common.ReadConfig.ReportServerUrl(), Common.EnumClass.ReportService2010.ToString() + ".asmx");
               
                CatalogItem[] items;
                items = _rs.ListChildren(Common.CommonClass.GetReportFileFolderPath(Common.ReadConfig.ReportProjectName()), true);
                foreach (var item in items)
                {
                    if (item.TypeName == "Report")
                    {
                        sb.Append("<li>");
                       &