SSRS 2016 からページ分割されたレポートをコードからカスタム名でエクスポートしたいと考えています。古い 2005 コントロールを使用すれば実行できますが、新しい URL アクセスを使用するとプロンプトが表示されますが (Edge を使用している場合)、デフォルトでレポートの名前が使用されるか、Chrome ではプロンプトが表示されずにダウンロードされます。たとえば、レポート名は MyTestReport で、いくつかのパラメーターが渡されます。これらのパラメーターを使用してファイル名を設定できるようにしたいと思います。
http://localhost/ReportServer/Pages/ReportViewer.aspx?/Finance/MyTestReport&i_entityID=98&i_sy=2016&i_runType=3&i_isPreview=true&rs:Format=PDF
その URL は、可能であれば 2016_Preview_Report.pdfというファイル名を作成するのが理想的です。SSRS のドキュメントを検索しましたが、その方法については何も見つかりません。古い 2005 コントロールを使用して PDF にエクスポートするために使用しているコードのセクションを以下に示します。
IReportServerCredentials irsc = new CustomReportCredentials(userid, password, domain);
var parametersCollection = new List<ReportParameter>();
parametersCollection.Add(new ReportParameter("i_sy", SY.ToString(), false));
parametersCollection.Add(new ReportParameter("i_entityID", LEA.ToString(), false));
parametersCollection.Add(new ReportParameter("i_runType", runtype.ToString(), false));
parametersCollection.Add(new ReportParameter("i_isPreview", isPreview.ToString(), false));
ReportViewer rv = new Microsoft.Reporting.WebForms.ReportViewer();
rv.ProcessingMode = ProcessingMode.Remote;
rv.ServerReport.ReportServerCredentials = irsc;
rv.ServerReport.ReportPath = REPORT_PATH;
rv.ServerReport.ReportServerUrl = new Uri(SSRS_REPORT_SERVER);
rv.ServerReport.SetParameters(parametersCollection);
rv.ServerReport.Refresh();
byte[] streamBytes = null;
string mimeType = "";
string encoding = "";
string filenameExtension = "PDF";
string[] streamids = null;
Warning[] warnings = null;
FileContentResult ReturnFile = null;
filenameExtension = ExportType;
mimeType = "application/pdf";
streamBytes = rv.ServerReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
ReturnFile = File(streamBytes, mimeType, filename + "."+filenameExtension);
return ReturnFile;