【发布时间】:2016-12-02 12:24:51
【问题描述】:
我正在研究在内存中生成 SSRS 报告以作为邮件附件附加的解决方案。我用的是2010版。
报表具有必须填写的参数以正确呈现报表。
我找到了一些解决方案如何做到这一点:
解决方案 1
使用 MS 原生 ReportViewer 类。我们可以在内存中实例化对象,连接到服务器并使用控制 API 以所需格式呈现报告
report.ServerReport.ReportServerCredentials = new MyCredentials(...);
report.ServerReport.ReportServerUrl = new Uri("ssrs_url");
report.ServerReport.ReportPath = "path-to-report";
byte[] reportData = report.ServerReport.Render("excel");
该解决方案有一个主要缺点 - 它需要大量依赖项才能使用报告控制。因此,很难在分层架构中使用,因为较低层具有有限且预定义的依赖项集以松散耦合并易于移植到广泛的操作系统和云堆栈。
所以在我的情况下不能采用这种解决方案
解决方案 2
使用报表服务器公共 API 访问已采用所需格式的数据。我发现这是可以实现的,MS 证实了这一点。这是链接https://msdn.microsoft.com/en-us/library/ms154040.aspx
所以我们可以使用正确配置的链接来访问数据:http://myrshost/ReportServer?/myreport&rs:Format=PDF
此解决方案最适合我的需求,但我不知道如何将报表参数传递给此报表?还有如何首先针对 SSRS 报表服务器进行身份验证?
有人可以帮我解决这个问题吗?
【问题讨论】:
-
是否可以选择使用 ReportingServices Web 服务?根据您的 SSRS 版本(您可以将其包含在您的帖子中),您可以在此处找到服务 asmx:myrshost:80/ReportServer/ReportExecution2005.asmx。
-
是的,我有所有需要的数据。如何将数据传递给特定的报表参数。我要求在提交报告之前填写属性
-
现在有约会,稍后会回复您(如果没有其他人更快;))同时查看 MSDN 的服务。 msdn.microsoft.com/en-us/library/ms152787.aspx
标签: c# reporting-services reportviewer