Я разрабатываю приложение ASP.NET MVC и пытаюсь реализовать функцию, позволяющую пользователям загружать объединенные отчеты в формате PDF, созданные службами отчетов SQL Server (SSRS). У меня есть метод DownloadMergedPdf, который использует элемент управления ReportViewer для визуализации PDF-файлов.
Вот упрощенная версия моего кода:
public ActionResult DownloadMergedPdf(List Ids, string Title, string reportName)
{
List fileArray = new List();
if (Ids != null && Ids.Count > 0)
{
try
{
int totalReports = Ids.Count;
int currentReportIndex = 0;
foreach (var id in Ids)
{
currentReportIndex++;
int i = int.Parse(id);
string SoCt = db.PhieuThu.Where(x => x.Id == i).Select(x => x.SoPhieu).FirstOrDefault().ToString();
// Set the report path and parameters
reportViewer.ServerReport.ReportPath = "/DemoReport/" + reportName;
ReportParameter[] parameters = new ReportParameter[2];
parameters[0] = new ReportParameter("Id", id, true);
parameters[1] = new ReportParameter("Title", Title, true);
reportViewer.ServerReport.SetParameters(parameters);
// Render the report to PDF
byte[] pdfBytes = reportViewer.ServerReport.Render(
"PDF",
null,
out string mimeType,
out string encoding,
out string fileNameExtension,
out string[] streams,
out Microsoft.Reporting.WebForms.Warning[] warnings
);
if (pdfBytes != null && pdfBytes.Length > 0)
{
fileArray.Add(pdfBytes);
}
else
{
throw new Exception($"Error rendering report for ID {id}: PDF bytes are null or empty.");
}
}
var mergedBytes = MergePdfBytes(fileArray);
return File(mergedBytes, "application/pdf", "MergedReport.pdf");
}
catch (Exception ex)
{
// Log the error for debugging
System.Diagnostics.Debug.WriteLine("Error in DownloadMergedPdf: " + ex.Message);
return new HttpStatusCodeResult(500, "An error occurred while creating the PDF file: " + ex.Message);
}
}
else
{
return RedirectToAction("Index", "Home");
}
}
Проблема: при выполнении этого кода в IIS я столкнулся со следующими проблемами:
Разрешения, предоставленные пользователю ' IIS APPPOOL\YourAppPoolName» недостаточно для выполнения этой операции. (rsAccessDenied)
Путь к элементу «/DemoReport/» недействителен. Полный путь должен содержать менее 260 символов; применяются другие ограничения.
Вопрос:
Как я могу гарантировать, что приложение имеет необходимые разрешения для доступа к отчетам с помощью ReportViewer?
Какие действия следует предпринять, чтобы избежать ошибки rsInvalidItemPath при настройке пути к отчету?
Есть ли требуются ли на сервере какие-либо конкретные настройки для успешного рендеринга и загрузки объединенных PDF-файлов с помощью ReportViewer?
Будем очень признательны за любые рекомендации и предложения!
Я разрабатываю приложение ASP.NET MVC и пытаюсь реализовать функцию, позволяющую пользователям загружать объединенные отчеты в формате PDF, созданные службами отчетов SQL Server (SSRS). У меня есть метод DownloadMergedPdf, который использует элемент управления ReportViewer для визуализации PDF-файлов. Вот упрощенная версия моего кода: [code]public ActionResult DownloadMergedPdf(List Ids, string Title, string reportName) { List fileArray = new List();
if (Ids != null && Ids.Count > 0) { try { int totalReports = Ids.Count; int currentReportIndex = 0;
foreach (var id in Ids) { currentReportIndex++; int i = int.Parse(id); string SoCt = db.PhieuThu.Where(x => x.Id == i).Select(x => x.SoPhieu).FirstOrDefault().ToString();
// Set the report path and parameters reportViewer.ServerReport.ReportPath = "/DemoReport/" + reportName; ReportParameter[] parameters = new ReportParameter[2]; parameters[0] = new ReportParameter("Id", id, true); parameters[1] = new ReportParameter("Title", Title, true); reportViewer.ServerReport.SetParameters(parameters);
// Render the report to PDF byte[] pdfBytes = reportViewer.ServerReport.Render( "PDF", null, out string mimeType, out string encoding, out string fileNameExtension, out string[] streams, out Microsoft.Reporting.WebForms.Warning[] warnings );
if (pdfBytes != null && pdfBytes.Length > 0) { fileArray.Add(pdfBytes); } else { throw new Exception($"Error rendering report for ID {id}: PDF bytes are null or empty."); } }
var mergedBytes = MergePdfBytes(fileArray); return File(mergedBytes, "application/pdf", "MergedReport.pdf"); } catch (Exception ex) { // Log the error for debugging System.Diagnostics.Debug.WriteLine("Error in DownloadMergedPdf: " + ex.Message); return new HttpStatusCodeResult(500, "An error occurred while creating the PDF file: " + ex.Message); } } else { return RedirectToAction("Index", "Home"); } } [/code] Проблема: при выполнении этого кода в IIS я столкнулся со следующими проблемами: [list] [*]Разрешения, предоставленные пользователю ' IIS APPPOOL\YourAppPoolName» недостаточно для выполнения этой операции. (rsAccessDenied) [*]Путь к элементу «/DemoReport/» недействителен. Полный путь должен содержать менее 260 символов; применяются другие ограничения. [/list] Вопрос: [list] [*]Как я могу гарантировать, что приложение имеет необходимые разрешения для доступа к отчетам с помощью ReportViewer? [*]Какие действия следует предпринять, чтобы избежать ошибки rsInvalidItemPath при настройке пути к отчету? [*]Есть ли требуются ли на сервере какие-либо конкретные настройки для успешного рендеринга и загрузки объединенных PDF-файлов с помощью ReportViewer? Будем очень признательны за любые рекомендации и предложения! [/list]
Я пытаюсь вернуть список отчетов с нашего сервера отчетов SSRS, используя C# и Visual Studio 2022.
Я видел в Интернете много примеров того, как этого добиться, но не из них работают (по сути они все одинаковы).
Я даже пробовал примеры из Chat-GPT,...
Есть ли способ создать книгу отчетов путем объединения многих отчетов rdlc в один большой PDF-файл в .net framework.
Обычно мы передаем Datasource для создания PDF-файлов в отчет rdlc, а затем преобразуем его в форму PDF. Итак, можем ли мы во время...
У меня есть проект ASP.Net MVC с отчетом (Microsoft.ReportViewer). Когда я компилирую проект, VS2022 добавляет dll-ресурсы для разных языков для Microsoft.SqlServer.Types и Microsoft.ReportViewer. Но мне нужны только английские версии.
Я пытался...
У меня есть проект ASP.NET MVC с отчетом ( Microsoft.ReportViewer). Когда я компилирую этот проект, VS2022 добавляет ресурсы dll для различных языков для Microsoft.SqlServer.Types и Microsoft.ReportViewer. Но мне нужны только английские версии.
Я...
Я новичок в такого рода миграции. Пожалуйста, помогите мне!
TransferResult требуется ли это в Asp.Net Core MVC .Net8 при переходе с MVC? (на основе ответа Маркуса Олссона)
Если да, то как изменить код для перехода с .net 4.8 на .net 8.0
Я получаю...