我们正在研究用 SSRS 替换 Crystal。
我想知道是否可以在 C# 中加载 .rdl 或 .rdl.data 文件并将报告生成到内存流。
我看过一些使用 LocalReport 的例子,但这似乎是 WinForms 或 WebForms 程序集的一部分。
所以我想知道的是:
- 作为我们服务的一部分,是否可以从文件加载报告。
- 然后我们可以将报告生成到 Stream(假设是内存 流)
- 我可以在不使用 WebForms/WinForms 程序集的情况下执行此操作吗? 服务
- 我们能否在不使用 SSRS 网络服务的情况下实现这一目标
最佳答案
我不确定这是一个答案,但我们称之为支持 Material 。
我有这个来自 msdn 的代码示例,它展示了如何通过创建服务客户端并将给定报告作为 PDF 调用并将其保存到文件流来执行此操作。
http://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render.aspx
我目前遇到的问题是在将 VS 指向 SSRS 服务后找到要与之交互的正确客户端对象。我用来与服务交互的对象是:
ReportExecutionServiceSoapClient rs = new ReportExecutionServiceSoapClient();
但是,界面与我的代码示例不匹配。所以这有点接近,但不是答案。
更新:正确的代理类生成器
这里是如何正确生成代理的链接。您需要安装 windows sdk(当前为 7.1)。您可以像我一样在 microsoft.com 上找到它。执行命令行,它会为您生成一个文件。包含在项目中:
http://msdn.microsoft.com/en-us/library/ms155134%28v=SQL.110%29.aspx
更新:一切正常
我只需要生成正确的代理。好的,对于 SSRS 2010,显然他们将报告执行和管理分成了两项服务。从 C# 控制台应用程序生成报告所需的唯一一个是执行服务。也许这对除了我之外的每个人来说都是显而易见的:)?
好的,那么打开一个 Windows SDK 命令外壳并将这些东西放入其中以用于执行服务:
wsdl /language:CS /n:"Microsoft.SqlServer.ReportExecution" http://<Server Name>/reportserver/reportexecution2010.asmx?wsdl /o:"ReportExecution.cs"
转到 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";
按照 this link 中的示例进行操作,与上面的相同,您应该可以从方便的 C# 应用程序生成一些非常棒的报告。
关于c# - 在服务中从 C# 中的文件加载 SSRS 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7255428/