Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 如何通过SSRS Web服务获取报告URL?_Reporting Services - Fatal编程技术网

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

Reporting services 如何通过SSRS Web服务获取报告URL?,reporting-services,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 我知道我可以自己创建UR

在我的项目中,我在网上参考了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,但我不喜欢重新发明轮子。

关于SSR是如何工作的,以及你想花多少时间在它上面

你可以穿越树根,但我很怀疑你的意思。从根目录中,您可以添加项目,无论它们是目录还是报告。此外,您可以将参数直接添加到RESTURI以呈现报告,还可以输出一个值。例如:

地址根的主要部分:

http:// <server>/ReportServer/Pages/ReportViewer.aspx?
报告路径(标记为同名lol)

怎么办?(渲染)

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

总而言之:

http:// <servername>/ReportServer/Pages/ReportViewer.aspx?%2fTest%2fTest&rs:Command=Render&Test=Value
http:///ReportServer/Pages/ReportViewer.aspx?%2fTest%2fTest&rs:Command=Render&Test=Value
二,。你有一个数据库,你可以查询遍历的东西,但我相信微软并没有很好的文档。通常,它是一个名为“ReportServer”的SQL Server数据库,位于您安装SSRS的任何服务器上。通常,大多数项目位于表“dbo.Catalog”中,报告的“Type”为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)
A:http:///reportserver/reportservice2010 (获取服务器上现有项目的信息)
B:http://reportserver/reportexecution2005(获取在代码中直接向类型创建报告的信息)
我在这里还有一条关于导出的线索:;但你可能也需要获得信息。一旦您创建了代理类(或对web服务进行了引用),您就可以在.NET中这样编写代码。这些服务发挥了所有的魔力,因此如果没有它们,您就无法在SSR中真正建模。基本上,我创建了一个类,您可以将需要引用的“SERVER”传递给该类,如“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" } };
            }
        } 
private ReportingService 2010_ReportingService=new ReportingService 2010();
私有ReportExecutionService_ReportingExecution=new ReportExecutionService();
私有字符串_服务器{get;set;}
公共读写器(字符串服务器)
{
_服务器=服务器;
_ReportingService.Url=_server+@“/ReportService2010.asmx”;
_ReportingService.Credentials=System.Net.CredentialCache.DefaultCredentials;
_ReportingExecution.Url=_server+@“/ReportExecution2005.asmx”;
_ReportingExecution.Credentials=System.Net.CredentialCache.DefaultCredentials;
}
公共列表GetReportParameters(字符串报告)
{
尝试
{
return_ReportingService.GetItemParameters(report,null,false,null,null).ToList();
}
捕获(例外情况除外)
{
Show(“获取参数信息时出错:\n”+ex.Message);
返回新列表{newItemParameter{Name=“Parameter Not Found”};
}
}
公共列表GetChildInfo(字符串目标)
{
尝试
{
返回_ReportingService.ListChildren(“/”+dest,false).ToList();
}
捕获(例外情况除外)
{
Show(“获取位置的子信息时出错:\n\n”+ex.Message);
返回新列表{new CatalogItem{Name=“Path不存在”,Path=“Path不存在”};
}
} 

列出儿童是一条路。当在多个文件夹中有报告时,始终可以将第二个参数设置为true以返回所有目录项

Dim items As CatalogItem() = rs.ListChildren(reportPath, True)  

使用web服务不是问题。我知道我可以从中检索报表对象列表和参数列表。我所寻找的是一种让web服务使用我提供给web服务的值为我构建URI的方法,但它似乎不存在。我知道我可以自己构建URI,但正如我之前写的那样,我尝试不重新创建轮子。您可以从根目录遍历列表,也可以在.NET中获取“目录”项的列表。在我上面的第三部分中,“GetChildInfo”的第二个方法返回目录中的目录或项目数组,与DOS中的“dir”命令非常相似。通常,我要么在数据库中查询“ReportServer”的信息,要么使用一个WPF应用程序来实现我的类,该类实现了我的方法,以获取有关报表或其参数的信息。要获得web服务的路径,您只需将部分分割到根旁边,并在末尾插入“&”plus命令。
http:// <servername>/ReportServer/Pages/ReportViewer.aspx?%2fTest%2fTest&rs:Command=Render&Test=Value
 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)
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" } };
            }
        } 
Dim items As CatalogItem() = rs.ListChildren(reportPath, True)