reporting-services - 如何通过 SSRS Web 服务获取报告 URL?

标签 reporting-services

在我的项目中,我有一个对 SSRS (2005) 的网络引用。我想显示可以将用户直接带到呈现报告的链接。我知道我可以提供一个这样的链接:

http://server/ReportServer/Pages/ReportViewer.aspx?/path/to/report&rs:Command=Render&rc:parameters=false&rs:format=HTML4.0

问题是如何从 Web 服务中获取该 URL?如果报告带有参数,有没有办法为 Web 服务提供值并让它为我格式化 URL?

我知道我可以自己构建 URL,但我不喜欢重新发明轮子。

最佳答案

关于 SSRS 的工作原理以及您想投入多少时间来玩弄它,有几点需要考虑。

我。你可以遍历根,但我非常怀疑你的意思。您可以从根目录添加项目,无论它们是目录还是报告。除此之外,您可以将参数直接添加到 Rest URI 以呈现报告,您也可以输出一个值。例如:

地址根的主要部分:

http:// <server>/ReportServer/Pages/ReportViewer.aspx?

目录路径:

%2fTest

报告路径(标记为同名哈哈)

%2fTest

如何处理它? (渲染)

&rs:Command=Render

放入一个参数并执行它(是的,我也调用了我的参数测试!)

&Test=Value

把它们放在一起:

http:// <servername>/ReportServer/Pages/ReportViewer.aspx?%2fTest%2fTest&rs:Command=Render&Test=Value

二。你有一个数据库,你可以查询遍历的东西,但我相信 MS 没有很好地记录它。通常,它是一个名为“ReportServer”的 SQL Server 数据库,位于您安装 SSRS 的任何服务器上。一般来说,大多数项目都在“dbo.Catalog”表中,报告的“类型”为 2。您可以从那里获取他们的信息甚至参数。

三。您想全力以赴并深入研究 .NET 并直接与服务对话吗?你也可以那样做。你需要两个主要的服务来做到这一点:

 A: http://<Server Name>/reportserver/reportservice2010 (gets info on existing items on server)

 B: http:// <Server Name>reportserver/reportexecution2005 (gets info for in code creating reports to types directly in code)

我在这里导出了另一个线程:Programmatically Export SSRS report from sharepoint using ReportService2010.asmx ;但您可能也会获得信息。一旦您创建了代理类(或引用了 Web 服务),您就可以像这样在 .NET 中编写代码。这些服务可以发挥所有作用,因此如果没有它们,您将无法在 SSRS 中进行太多建模。基本上,我创建了一个类,您将传递您需要引用的类的“服务器”,例如“http:///ReportServer”。

private ReportingService2010 _ReportingService = new ReportingService2010();
        private ReportExecutionService _ReportingExecution = new ReportExecutionService();

        private string _server { get; set; }

        public ReaderWriter(string server)
        {
            _server = server;
            _ReportingService.Url = _server + @"/ReportService2010.asmx";
            _ReportingService.Credentials = System.Net.CredentialCache.DefaultCredentials;

            _ReportingExecution.Url = _server + @"/ReportExecution2005.asmx";
            _ReportingExecution.Credentials = System.Net.CredentialCache.DefaultCredentials;
        }

public List<ItemParameter> GetReportParameters(string report)
        {
            try
            {
                return _ReportingService.GetItemParameters(report, null, false, null, null).ToList();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Getting Parameter info threw an error:\n " + ex.Message);
                return new List<ItemParameter> { new ItemParameter { Name = "Parameter Not Found" } };
            }
        }

        public List<CatalogItem> GetChildInfo(string dest)
        {
            try
            {
                return _ReportingService.ListChildren("/" + dest, false).ToList();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Getting Child info of location threw an error:\n\n" + ex.Message);
                return new List<CatalogItem> { new CatalogItem { Name = "Path Does Not exist", Path = "Path Does not exist" } };
            }
        } 

关于reporting-services - 如何通过 SSRS Web 服务获取报告 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051981/

相关文章:

sql-server - SSRS 报表生成器 2.0 - 与 SQL 2005 一起使用

date - SSRS - 按日期时间字段的日期部分进行分组,由 FetchXML 查询产生

web-services - SSRS 如何使用 Powershell 获取报表缓存选项?

C#/报表查看器 : How to use parameters without specifying parameter names

visual-studio - 在 SSRS 中交换两个图表的可见性,而不产生 Accordion 效果

asp.net - 如何使用 ReportService2010 命名空间呈现报表

c# - SQL Server 2008 和.Net 4.0?

reporting-services - 当右侧的 tablix 展开时,左侧的报表元素会被下推

c# - 从 C# 调用 SSRS 报告时仅主报告显示数据子报告给出错误

vba - SSRS文本框悬挂缩进