Я прочитал несколько статей по этой проблеме, однако все они закончили тем, что они не работают или находятся на vb.net.Сохранить отчет SSRS как PDF в C# программно
То, что я в настоящее время:
Отчеты доступны через URL, который делает их как PDF и сохраняет их в папке загрузки, когда пользователь нажимает на кнопку, они приведены общие имена, такие как OrderReport, OrderReport (1) ... и так далее.
var orderNum = 1;
"http://Server/ReportServer_Name/Pages/ReportViewer.aspx?%2fOrderReport&rs:Command=Render&OrderID=" + orderNum + "&rs:ClearSession=true&rs:Format=PDF"
Я пытаюсь для того чтобы достигнуть:
- Я хотел бы использовать C# для извлечения этого отчета, если это возможно, а затем указать имя файла PDF и сохранить его в правильном место нахождения.
так, например, я хотел бы сохранить этот отчет во временной папке на текущий момент «C: \ TEMP» с именем OrderID-1. Я использую C#
я добавил в ServiceReference в проект я использую под названием ReportTestings поэтому ссылка
using ReportTestings;
и Web Reference URL:
http://Server/ReportServer_Name/ReportExecution2005.asmx
(удален фактические имена по соображениям безопасности)
, поэтому, основываясь на всей этой информации выше, кто-то может указать мне правильное направление или привести пример часть кода, Thankyou для всех, которые читают этот пост или помочь
с помощью этого кода я получаю эту ошибку: (+ е
{"Access to the path 'C:\\Program Files (x86)\\IIS Express\\report1one.pdf' is denied."} System.Exception {System.UnauthorizedAccessException})
код:
ReportExecutionService rs = new ReportExecutionService();
rs.Credentials = new NetworkCredential("username", "password", "domain");
rs.Url = "http://Server/ReportServer_Name/reportexecution2005.asmx";
// Render arguments
byte[] result = null;
string reportPath = "/Invoice";
string format = "PDF";
string historyID = null;
string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
// Prepare report parameter.
ParameterValue[] parameters = new ParameterValue[3];
parameters[0] = new ParameterValue();
parameters[0].Name = "InvoiceID";
parameters[0].Value = "2";
DataSourceCredentials[] credentials = null;
string showHideToggle = null;
string encoding;
string mimeType;
string extension;
Warning[] warnings = null;
ParameterValue[] reportHistoryParameters = null;
string[] streamIDs = null;
ExecutionInfo execInfo = new ExecutionInfo();
ExecutionHeader execHeader = new ExecutionHeader();
rs.ExecutionHeaderValue = execHeader;
execInfo = rs.LoadReport(reportPath, historyID);
rs.SetExecutionParameters(parameters, "en-us");
String SessionId = rs.ExecutionHeaderValue.ExecutionID;
Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID);
try
{
result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);
execInfo = rs.GetExecutionInfo();
Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime);
}
catch (SoapException e)
{
Console.WriteLine(e.Detail.OuterXml);
}
// Write the contents of the report to an MHTML file.
try
{
FileStream stream = File.Create("report1one.pdf", result.Length);
Console.WriteLine("File created.");
stream.Write(result, 0, result.Length);
Console.WriteLine("Result written to the file.");
stream.Close();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
ive пытались это, но я продолжаю получать доступ, отказавшись при попытке сохранить отчет где-нибудь. Посмотрите на приведенный выше пример, пожалуйста, добавьте сейчас, если бы вы могли пройти мимо отказа в доступе, который помог бы ужасной лоте – Crezzer7
Пример в ссылка, предоставленная мной (https://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render.aspx) довольно проста, посмотрели ли вы на нее? –
да, по-прежнему та же проблема с доступом denied – Crezzer7