从服务中的C#中的文件加载SSRS报告

Adr*_*der 2 c# service reporting-services

我们正在考虑用SSRS取代Crystal.

我想知道是否可以在C#中加载.rdl或.rdl.data文件并生成报告到内存流.

我见过一些使用LocalReport的例子,但这似乎是WinForms或WebForms程序集的一部分.

所以我想知道的是:

  • 是否可以从文件加载报告作为我们服务的一部分.
  • 然后我们可以生成报告到Stream(比如一个内存流)
  • 我可以在不使用我的服务中的WebForms/WinForms程序集的情况下执行此操作
  • 我们可以在不使用SSRS的Web服务的情况下实现这一目标

Jos*_*son 7

我不确定这是一个答案,但我们称之为支持材料.

我有来自msdn的这个代码示例,它显示了如何通过创建服务客户端并将给定报告作为PDF调用并将其保存到文件流来完成此操作.

http://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render.aspx

我目前遇到的问题是在将VS指向SSRS服务后找到正确的客户端对象进行交互.我用来与服务交互的对象是:

ReportExecutionServiceSoapClient rs = new ReportExecutionServiceSoapClient();
Run Code Online (Sandbox Code Playgroud)

但是,该接口与我的代码示例不匹配.所以这有点接近,但不是答案.

更新:正确的代理类生成器

这是如何正确生成代理的链接.你需要安装windows sdk(当前是7.1).你可以在microsoft.com上找到它,就像我一样.执行命令行,它将为您生成一个文件.包含在项目中:

http://msdn.microsoft.com/en-us/library/ms155134%28v=SQL.110%29.aspx

更新:让事情发挥作用

我只需要生成正确的代理.好吧,对于SSRS 2010,显然他们将报告执行和管理分成两个服务.我需要从C#控制台应用程序生成报告的唯一一个是执行服务.也许除了我之外,对每个人来说都是显而易见的:)?

好的,打开一个Windows SDK命令shell,并将其中的内容放入执行服务中:

wsdl /language:CS /n:"Microsoft.SqlServer.ReportExecution" http://<Server Name>/reportserver/reportexecution2010.asmx?wsdl /o:"ReportExecution.cs"
Run Code Online (Sandbox Code Playgroud)

转到C:\ Program Files\Microsoft SDKs\Windows\v7.1并获取ReportExecution.cs文件.将其复制并粘贴到您的项目中.

然后你只需要这样说:

Microsoft.SqlServer.ReportExecution.ReportExecutionService rsExec = 
                new Microsoft.SqlServer.ReportExecution.ReportExecutionService();
            rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials;
            rsExec.Url = @"http://<ServerName>/reportserver/ReportExecution2005.asmx";
Run Code Online (Sandbox Code Playgroud)

按照此链接中的示例进行操作,该链接与上面的相同,您应该从方便的C#应用​​程序生成一些非常棒的报告.