Я пытаюсь развернуть приложение, в котором я использовал Crystal Reports. Я хочу сказать, что оно работает на локальном хосте, так как я использую IIS Express и при подготовке я использую IIS. Это главное различие, о котором я могу думать, но просто чтобы быть уверенным, что я хочу выписать весь процесс, который был выполнен.
- Отчет о сборке в Visual Studio
- Создать ODBC-соединение на локальном хосте
- Запустить отчет на локальном хосте - все работает
- опубликовать приложение MVC
- добавить ODBC-соединение с тем же именем на сервере
- копировать отчет в правильное местоположение на сервере IIS
- Запустить приложение и сообщить, что приложение работает, отчет не работает.
Журнал, который я получаю:
FATAL 2018-08-28 03: 22: 30,923 37280ms Служба журнала GenerateReport - Исключение во время StringFormat: индекс (на основе нуля) должен быть больше или равен нулю и меньше размера списка аргументов. Создание отчетов по адресу: 28.08.2008 3:22:30, исключение: CrystalDecisions.CrystalReports.Engine.InternalException: не удалось открыть соединение.
QuoteReport 5092_4216_ {0FAD9DBD-DCD7-4158-816D-56895A79B362} .rpt
Подробности: [Код поставщика базы данных: 4060] ---> System.Runtime.InteropServices.COMException: Не удалось открыть соединение.
QuoteReport 5092_4216_ {0FAD9DBD-DCD7-4158-816D-56895A79B362} .rpt
Подробности: [Код поставщика базы данных: 4060]
в CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export (ExportOptions pExportOptions, RequestContext pRequestContext)
в CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream (ExportRequestContext reqContext)
--- Конец внутренней трассировки стека исключений ---
в CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException (исключение e)
в CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream (ExportRequestContext reqContext)
в CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream (ExportRequestContext reqContext)
в CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream (параметры ExportOptions)
в CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream (ExportFormatType formatType)
в QuickQuote.Controllers.ReportsController.GenerateReport (Int32 reportId, строка json) в C: \ Users \ James \ Source \ Repos \ QuickQuote3 \ QuickQuote \ Controllers \ ReportsController.cs: строка 84 {}
Может кто-нибудь сказать мне, в чем моя проблема? У меня гугл эта ошибка, и я не понимаю, в чем моя проблема.
try
{
var stream = _reportBuilder.BuildReport(dataSet, report, filePath, parameters);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", $"Quote{report.Name}-{DateTime.Now}.pdf");
}
catch (Exception e)
{
_loggingService.FatalFormat($"Generate Reports at: {DateTime.Now}, Exception: {e}");
throw;
}
Внутри reportBuilder.BuildReport
находится там, где оно ломается. Я уверен, что именно эта строка:
var stream = reportDocument.ExportToStream(ExportFormatType.PortableDocFormat);
Метод BuildReport:
public Stream BuildReport(DataSet dataSet, Report report, string path, string parameters)
{
var reportDocument = new ReportDocument();
reportDocument.Load(path);
reportDocument.SetDataSource(dataSet);
AddParametersToReport(ref reportDocument, report, parameters);
return reportDocument.ExportToStream(ExportFormatType.PortableDocFormat);
}