簡體   English   中英

使用WebClient將數據發布到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輕松包含在您的項目中,

的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);

此時,您將擁有所需的一切。 流,地雷類型,文件擴展名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM