C# 使用WebClient将数据发布到SSRS报告服务器
我正在尝试连接到SSRS服务器,并通过.NET webClient获取报告数据。我这样做是因为我不能使用表单,我不想只将用户发送到报表服务器。我宁愿把所有东西都保存在我的web应用程序中 我在控制器中有一段代码:C# 使用WebClient将数据发布到SSRS报告服务器,c#,c#-4.0,reporting-services,ssrs-2008-r2,ssrs-2012,C#,C# 4.0,Reporting Services,Ssrs 2008 R2,Ssrs 2012,我正在尝试连接到SSRS服务器,并通过.NET webClient获取报告数据。我这样做是因为我不能使用表单,我不想只将用户发送到报表服务器。我宁愿把所有东西都保存在我的web应用程序中 我在控制器中有一段代码: public IHttpActionResult GetSpecs(int Id) { var client = new WebClient(); client.Credentials = new System.Net.NetworkC
public IHttpActionResult GetSpecs(int Id)
{
var client = new WebClient();
client.Credentials = new System.Net.NetworkCredential("username", "pw", "domain");
var data = client.DownloadString(ReportServerUrl + "?%2fFactory+Specs+Reports%2fSpecs_Stats_Matrix&rs:Command=Render&a=" + Id + "&b=" + CurrentUser.Id);
return Ok(data)
}
它成功地连接到SSRS服务器,并获得数据。检查数据时,它看起来像是我需要的报告,但它只是SSRS服务器吐出的一个巨大的html和javascript字符串
我的问题是,有没有处理这些数据的好方法
我在一个陌生的领域,而且似乎没有很多人以这种方式与SSR互动
我不太确定如何显示最终用户的所有数据
谢谢 那很容易。:)
首先,您需要一些程序集来访问报表服务
所有这些程序集都可以通过Nuget轻松地包含在您的项目中
在此之后,您需要连接到SSRS服务实例,如下所示:
using Microsoft.Reporting.WebForms;
CustomReportCredentials reportServerCredentials = new CustomReportCredentials("User", "Password", "REPORTINGSERVER");
ServerReport report = new ServerReport()
{
ReportServerUrl = new Uri("https://reporting.xxxx.com/ReportServer"),
ReportServerCredentials = reportServerCredentials,
ReportPath = "/Reports/MyReport",
Timeout = 200000
};
向服务请求支持的呈现扩展并生成报告:
var renderExtentions = report.ListRenderingExtensions();
report.SetParameters(new ReportParameter[]
{
new ReportParameter("parameter1", dcStringID.ToString()),
new ReportParameter("parameter2", begin.ToString()),
new ReportParameter("parameter3", end.ToString())
});
String mineType = String.Empty;
String fileNameExtention = String.Empty;
Stream stream = report.Render(renderExtentions.First(), null, null, out mineType, out fileNameExtention);
在这一点上,你将拥有你所需要的一切。流、我的类型、文件扩展名。为什么不使用SSRS Web服务?@Davidansey我对SOAP一点也不熟悉,所以我避免使用它。您可以为SSRS Web服务生成.NET代理类,它将隐藏/抽象大部分SOAP痛点。这是几乎所有C#/SSRS Web服务调用示例中使用的方法——不要让SOAP部分吓跑您。@DavidTansey,谢谢,现在查看文档……但是,我不确定这是否是显示需要传递参数的报告的方法。这看起来只适用于管理和订阅。SSRS是一个非常棒的报告工具,Microsoft一如既往地让它非常易于使用。早在2007年,我就做过同样的事情,当时我们必须在应用程序中显示报告,并向最终用户隐藏ssrs服务器。因此,我们必须编写一个反向代理来处理所有单击事件,例如排序、筛选,然后在后台连接ssrs服务器,获取报告块并将其流回到客户端。