使用 WebClient 将 post 数据发送到 SSRS 报告服务器
Using WebClient to post data to an SSRS reporting server
我正在尝试连接到 SSRS 服务器并通过 .NET webClient 获取报告数据。我这样做是因为我不能使用表单,而且我不想只将用户发送到报表服务器。我宁愿将所有内容都保留在我的 Web 应用程序中。
所以我在控制器中有这段代码:
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。
我的问题是,是否有处理这些数据的好方法?
我处在陌生的领域,似乎没有多少人以这种方式与 SSRS 交互。
我不太确定如何向最终用户显示所有数据。
谢谢!
这很简单。 :)
首先您需要一些程序集来访问报告服务。
所有这些程序集都可以通过 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 服务器并通过 .NET webClient 获取报告数据。我这样做是因为我不能使用表单,而且我不想只将用户发送到报表服务器。我宁愿将所有内容都保留在我的 Web 应用程序中。
所以我在控制器中有这段代码:
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。
我的问题是,是否有处理这些数据的好方法?
我处在陌生的领域,似乎没有多少人以这种方式与 SSRS 交互。
我不太确定如何向最终用户显示所有数据。
谢谢!
这很简单。 :)
首先您需要一些程序集来访问报告服务。
所有这些程序集都可以通过 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);
至此,您将拥有所需的一切。流、矿类型、文件扩展名。