|
|
Rank: Newbie Groups: Member
Joined: 2/18/2009 Posts: 3
|
При построении таблицы в stiWebViewer по выборке около 5,5 тыс. строк, компонент либо показывает чистый лист, либо валится
Quote: Exception of type 'System.OutOfMemoryException' was thrown. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
Source Error:
Line 18: protected void Page_Load(object sender, EventArgs e) Line 19: { Line 20: this.ReportViewer.Report = this.CreateReport(@"IM\PropStatusIncum.mrt"); Line 21: } Line 22:
Source File: d:\Work\Projects\CPDB\trunk\src_Tsk\Source\TNKBP-CPDB Web\Pages\Reports\IM\Encum.aspx.cs Line: 20
Stack Trace:
[OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.] System.IO.MemoryStream.set_Capacity(Int32 value) +63 System.IO.MemoryStream.EnsureCapacity(Int32 value) +55 System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) +245 System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) +95 System.IO.StreamWriter.Write(String value) +109 System.Xml.XmlTextWriter.WriteStartAttribute(String prefix, String localName, String ns) +1073 System.Xml.XmlWriter.WriteAttributeString(String localName, String value) +21 Stimulsoft.Report.Components.StiText.Serialize(StiObjectStringConverter converter, XmlTextWriter tw) +714 Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +603 Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154 Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +780 Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154 Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +661 Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154 Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +780 Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154 Stimulsoft.Base.Serializing.StiSerializing.Serialize(Object obj, Stream stream, String application, StiSerializeTypes serializeType) +269 Stimulsoft.Report.SaveLoad.StiXmlDocumentSLService.Save(StiReport report, Stream stream) +386 Stimulsoft.Report.StiReport.SaveDocument(StiDocumentSLService service, Stream stream) +126 Stimulsoft.Report.StiReport.SaveDocument(Stream stream) +41 Stimulsoft.Report.StiReport.SaveDocumentToString() +205 Stimulsoft.Report.StiReport.SavePackedDocumentToString() +10 Stimulsoft.Report.Web.StiWebViewer.ProcessReport() +862 Stimulsoft.Report.Web.StiWebViewer.set_Report(StiReport value) +98 TNKBP_CPDB.Web.Pages.Reports.UL.Encum.Page_Load(Object sender, EventArgs e) in d:\Work\Projects\CPDB\trunk\src_Tsk\Source\TNKBP-CPDB Web\Pages\Reports\IM\Encum.aspx.cs:20 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
|
|
Rank: Newbie Groups: Member
Joined: 2/18/2009 Posts: 3
|
при смене режима рендеринга на RenderMode="RenderOnlyCurrentPage" стал строится. - Однако, не работает переход на заданную страницу, вернее дальше 4 не переходит. - При экспорте у Excel сохраняется только 3 страницы, начиная с текущей. - При экспорте в PDF сохранилось 10 страниц (229 строк из 5000+) из них 7 просто пустые листы
у меня версия 2008.2 триалFile Attachment(s):
Отчет.pdf (83kb) downloaded 4 time(s).
Отчет.xls (31kb) downloaded 5 time(s).
|
|
Rank: Advanced Member Groups: Stimulsoft Team
Joined: 6/9/2006 Posts: 888
|
Здравствуйте.
Вероятнее всего при построении отчета заканчивается память после 3 страницы. Проверьте, не используются ли у Вас картинки очень большого размера в отчете?
Также если отчет имеет более 100 страниц, то есть смысл как-то уменьшить его размер, поскольку большие отчеты в Web приводят к неоправданно большому использованию памяти.
Спасибо.
|
|
Rank: Newbie Groups: Member
Joined: 2/18/2009 Posts: 3
|
Размер отчета - 235 стр. Картинок нет вообще.
Мда. Очень грустное назадекларированное ограничение.
|
|
Rank: Advanced Member Groups: Stimulsoft Team
Joined: 6/9/2006 Posts: 888
|
Здравствуйте.
Да действительно, Ваш отчет имеет совсем не сложный и не отягощенный тяжелой графикой. Возможен ли тестовый проект, который иллюстрирует проблему?
Если да, то вышлите его, пожалуйста, на support[at]stimulsoft.com.
Спасибо.
|
|
Rank: Newbie Groups: Member
Joined: 3/5/2010 Posts: 1 Location: Ukraine
|
Добрый день, та же проблема > 4000 строк - WebViewer вылетает с Exception of type 'System.OutOfMemoryException' was thrown. Установлено Stimulsoft Reports.Ultimate 2009.3 Trial - которую и собираемся приобрести. Будет ли WebViewer работать на х64 ОС - так как на х86 ХР SP3 с 4Гб ОП сгенерировало отчет только с /3GB в boot.ini - и то только раз с приб. десяти попыток - так как с /3GB система крайне нестабильна. Опишите пожалуйста что приблизительно нужно для вынесения генерации и рендеринга\превью на отдельную машину повторюсь с х64 ОС.
|
|
Rank: Advanced Member Groups: Stimulsoft Team
Joined: 6/9/2006 Posts: 186
|
Здравствуйте,
Пришлите, пожалуйста, нам Ваш пример отчета с данными, а лучше sample project для тестирования на support@stimulsoft.com . По Вашему письму пока не совсем понятна причина нехватки памяти.
Спасибо.
|
|
Rank: Advanced Member Groups: Stimulsoft Team
Joined: 2/19/2009 Posts: 401
|
Здравствуйте Виталий,
Построение отчета у Вас происходит в событии PageLoad страницы. В данном режиме крайне нежелательно использовать режимы с кэшированием StiWebViewer. Поскольку отчет будет перестраиваться при каждом обновлении страницы, и при этом StiWebViewer будет сохранять построенный отчет в кэше страницы (или сессии). Именно кэширование отчета в Вашем случае съедает большую часть памяти (на Вашем примере, на тестовой машине съело около 70%). Измените свойство RenderMode StiWebViewer со значения AjaxWithCache на просто Ajax. В данном случае отчет не будет сохраняться при каждом перестроении, но отчет нужно будет перестраивать при каждом обновлении страницы (что скажется на скорости). Также стоит учитывать при использовании режима с кэшированием время, на которое отчет будет сохраняться отчет в кэше (задается свойством ServerTimeOut). При большом количестве одновременных обращений, память можно забить даже маленькими отчетами.
Также рекомендую Вам обновить папку с картинками экспортов и кнопок, т.к. она не полная. Архив в приложении.
Кроме этого я рекомендую обратить внимание на StiWebViewerFx вьювер отчетов. Достаточно новый вьювер для Web. Поставляется в комлекте с Reports.Web и Ultimate. Благодаря использованию Flash он обладает большим динамизмом и лучшим GUI. А кроме этого возлагает проблемы по хранению отчета для просмотра на клиент а не на сервер.
Еще посмотрите на тикет на нашем форуме http://forum.stimulsoft.com/Default.aspx?g=posts&t=142 В этом тикете подробно объясняется почему возникает утечки памяти при компиляции отчетов в событии PageLoad (не могу сказать критично это для Вас или нет) и как переделать код для того, чтобы они не возникали.
Дайте знать если понадобится помощь.
Спасибо.File Attachment(s):
Gif.zip (63kb) downloaded 6 time(s).
|
|
|
Guest |