我正在尝试部署使用Crystal Reports的应用程序。我想说的是,该应用程序在使用IIS Express的过程中可以在本地主机上使用,并且在分阶段使用IIS时也可以使用。这是我可以想到的主要区别,但只是要确保我想写出已完成的整个过程。
我得到的日志是:
FATAL 2018-08-28 03:22:30,923 37280ms日志服务GenerateReport-StringFormat期间发生异常:索引(从零开始)必须大于或等于零且小于参数列表的大小。在2018年8月28日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(Exception 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)处 在C:\ Users \ James \ Source \ Repos \ QuickQuote3 \ QuickQuote \ Controllers \ ReportsController.cs:line 84 {}
中的QuickQuote.Controllers.ReportsController.GenerateReport(Int32 reportId,String json)
有人可以告诉我我的问题是什么吗?我在Google上看到了此错误,但我不明白我的问题是什么。
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);
}
答案 0 :(得分:1)
异常消息为innerText
。
验证是否在ODBC数据源管理器(针对32位和64位)中正确设置了系统数据源。
您可能会收到Failed to open the connection
错误,因为.rpt文件中指定的凭据可能对该数据库无效。解决方案是通过代码提供数据库凭据:
Database logon failed