Sky*_*ell 2 c# reporting-services c#-4.0 ssrs-2008-r2 ssrs-2012
我正在尝试连接到 SSRS 服务器并通过 .NET webClient 获取报告数据。我这样做是因为我无法使用表单,并且我不想将用户发送到报表服务器。我宁愿将所有内容都保留在我的网络应用程序中。
所以我在控制器中有这段代码:
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)
}
Run Code Online (Sandbox Code Playgroud)
它成功连接到 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
};
Run Code Online (Sandbox Code Playgroud)
向服务询问支持的渲染扩展并生成报告:
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);
Run Code Online (Sandbox Code Playgroud)
此时您将拥有所需的一切。流、矿场类型、文件扩展名。
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |