Ошибки Web приложения
При использовании Web компоненты разработали свой Web - сервер отчетности
при выполнении отчета на Web - сервере получаем ошибки
1. Object reference not set to an instance of an object. at FastReport.ReportSettings.18lk7VUa9(Report )
at FastReport.Engine.ReportEngine.hvc6XnaPk(Boolean , Boolean , ReportPage )
at FastReport.Engine.ReportEngine.bnEGWGqgP(Boolean , Boolean )
at FastReport.Report.Prepare(Boolean append)
at FastReport.Report.Prepare()
at FastReportProcessor.Workers.Items.PrepareReportWorker.RunWork(Dictionary`2 inParameters, Dictionary`2& outParameters) in \Project\_NET\FRActual\FastReportsServer\FastReportProcessingService\Workers\Items\PrepareReportWorker.cs:line 361
2. Exception has been thrown by the target of an invocation. System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToInt32(String value)
at FastReport.ReportScript._StartReport(Object sender, EventArgs e) at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at vSkFQfrBvqqiacxMpN.Rqksuc4ueUwOiE0iNV.FNv8QB9HS(Object[] )
at egvTwCN3NjLtmqKTZU.KIuEsGqo8JRYP0Btwt.YKCN9f1Ac(String , Object[] )
at FastReport.Report.InvokeEvent(String name, Object[] parms)
at FastReport.Report.OnStartReport(EventArgs e)
at FastReport.Engine.ReportEngine.hvc6XnaPk(Boolean , Boolean , ReportPage )
at FastReport.Engine.ReportEngine.bnEGWGqgP(Boolean , Boolean )
at FastReport.Report.Prepare(Boolean append)
at FastReport.Report.Prepare()
at FastReportProcessor.Workers.Items.PrepareReportWorker.RunWork(Dictionary`2 inParameters, Dictionary`2& outParameters) in \Project\_NET\FRActual\FastReportsServer\FastReportProcessingService\Workers\Items\PrepareReportWorker.cs:line 361
При повторном запуске отчета с теми же параметрами ошибки нет.
В чем может быть причина такого поведения?
при выполнении отчета на Web - сервере получаем ошибки
1. Object reference not set to an instance of an object. at FastReport.ReportSettings.18lk7VUa9(Report )
at FastReport.Engine.ReportEngine.hvc6XnaPk(Boolean , Boolean , ReportPage )
at FastReport.Engine.ReportEngine.bnEGWGqgP(Boolean , Boolean )
at FastReport.Report.Prepare(Boolean append)
at FastReport.Report.Prepare()
at FastReportProcessor.Workers.Items.PrepareReportWorker.RunWork(Dictionary`2 inParameters, Dictionary`2& outParameters) in \Project\_NET\FRActual\FastReportsServer\FastReportProcessingService\Workers\Items\PrepareReportWorker.cs:line 361
2. Exception has been thrown by the target of an invocation. System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToInt32(String value)
at FastReport.ReportScript._StartReport(Object sender, EventArgs e) at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at vSkFQfrBvqqiacxMpN.Rqksuc4ueUwOiE0iNV.FNv8QB9HS(Object[] )
at egvTwCN3NjLtmqKTZU.KIuEsGqo8JRYP0Btwt.YKCN9f1Ac(String , Object[] )
at FastReport.Report.InvokeEvent(String name, Object[] parms)
at FastReport.Report.OnStartReport(EventArgs e)
at FastReport.Engine.ReportEngine.hvc6XnaPk(Boolean , Boolean , ReportPage )
at FastReport.Engine.ReportEngine.bnEGWGqgP(Boolean , Boolean )
at FastReport.Report.Prepare(Boolean append)
at FastReport.Report.Prepare()
at FastReportProcessor.Workers.Items.PrepareReportWorker.RunWork(Dictionary`2 inParameters, Dictionary`2& outParameters) in \Project\_NET\FRActual\FastReportsServer\FastReportProcessingService\Workers\Items\PrepareReportWorker.cs:line 361
При повторном запуске отчета с теми же параметрами ошибки нет.
В чем может быть причина такого поведения?
Комментарии
Выявлен баг при работе с WebReport. Отчет загружается/просматриватеся нормально, но при попытке экспорта выдает ошибку, что запрошенный url не найдет. При узучение исходного кода решил следующим образом:
файл WebReport.cs
private void ResponseExport(string guid, WebExportItem ExportItem, bool displayInline)
{
//не стал вносить ExportItem в кеш, поскольку смысла этого не вижу, тк этот элемент создается заного при каждом
//новом запросе экспорта.
/*
ExportItem.FileName = GetExportFileName(ExportItem.Format);
CacheAdd(string.Format("frxExport{0}", guid), ExportItem, null, 5);
//вот по этой юрл и не находило файл, если честно я так и не понял как он там должен оказаться тк записи фалй на
// диск с потока ExportItem.File нигде не производится.
string url = string.Format("~/{0}.fre?ID={1}&displayinline={2}", ExportItem.FileName, guid, displayInline);
Page.Response.Redirect(url, true);
*/
//вот этот код замечательно работает!
//Передаём отчёт в качестве ответа на запрос
Page.Response.Clear();
Page.Response.ContentType = ExportItem.ContentType;
Page.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", ExportItem.FileName));
Page.Response.BinaryWrite(ExportItem.File.ToArray());
Page.Response.End();
//думаю в пояснениях не нуждается, тут все довольно просто.
}
Exception of type 'System.OutOfMemoryException' was thrown. at System.Data.Common.DoubleStorage.SetCapacity(Int32 capacity)
at System.Data.RecordManager.set_RecordCapacity(Int32 value)
at System.Data.RecordManager.GrowRecordCapacity()
at System.Data.RecordManager.NewRecordBase()
at System.Data.DataTable.NewRecordFromArray(Object[] value)
at System.Data.DataTable.LoadDataRow(Object[] values, Boolean fAcceptChanges)
at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at FastReport.Data.DataConnectionBase.FillTableData(DataTable table, String selectCommand, CommandParameterCollection parameters)
at FastReport.Data.DataConnectionBase.FillTable(TableDataSource source)
at FastReport.Data.TableDataSource.LoadData(ArrayList rows)
at FastReport.Data.DataSourceBase.HgCQhtHA6()
at FastReport.Data.DataSourceBase.HnaElR5wn(Relation , String , SortCollection , Boolean )
at FastReport.Data.DataSourceBase.y2U50FTkn(DataSourceBase , String , SortCollection , Boolean )
at FastReport.DataBand.InitDataSource()
at FastReport.Engine.ReportEngine.E5ETQu8AJ(DataBand )
at FastReport.Engine.ReportEngine.mBJ8GhfdZv(BandCollection )
at FastReport.Engine.ReportEngine.aQm8WgUeFP(ReportPage )
at FastReport.Engine.ReportEngine.IZ68C0SwwX()
at FastReport.Engine.ReportEngine.FmHCiI8fI(ReportPage )
at FastReport.Engine.ReportEngine.hvc6XnaPk(Boolean , Boolean , ReportPage )
at FastReport.Engine.ReportEngine.bnEGWGqgP(Boolean , Boolean )
at FastReport.Report.Prepare(Boolean append)
at FastReport.Report.Prepare()
at FastReportProcessor.Workers.Items.PrepareReportWorker.RunWork(Dictionary`2 inParameters, Dictionary`2& outParameters) in \Project\_NET\FRActual\FastReportsServer\FastReportProcessingService\Workers\Items\PrepareReportWorker.cs:line 370
<system.web>
....
<httpHandlers>
<add path="*.fre" verb="*" type="FastReport.Web.Handlers.WebExport"/>
....
</httpHandlers>
</system.web>
Добавил в своем проекте. Такое чувство, что хендлер не отрабатывает и метод FastReport.Web.Handlers.WebExport.ProcessRequest() не вызывается.
пробовал в разных вариациях и
<add path="*.fre" verb="*" type="FastReport.Web.Handlers.WebExport"/>
и
<add path="*.fre*" verb="*" type="FastReport.Web.Handlers.WebExport"/>
и
<add path="*.fre" verb="*" type="FastReport.Web.Handlers.WebExport"/>
и
<add verb="*" path="*.fre" type="FastReport.Web.Handlers.WebExport, FastReport.Web, Version=1.5.29.0, Culture=neutral, PublicKeyToken=null"/>
Все равно не работает. Где может быть ошибка?
Подскажи детальнее че с этим делать то???? Куда эту процедуру или сам файл с ней нужно кинуть????