Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WebClient将数据发布到SSRS报告服务器_C#_C# 4.0_Reporting Services_Ssrs 2008 R2_Ssrs 2012 - Fatal编程技术网

C# 使用WebClient将数据发布到SSRS报告服务器

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

我正在尝试连接到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字符串

我的问题是,有没有处理这些数据的好方法

我在一个陌生的领域,而且似乎没有很多人以这种方式与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服务器,获取报告块并将其流回到客户端。