Страница 1 из 1

Печать/сохранить возвращают пустые страницы

Добавлено: 24 авг 2016, 16:40
SergeyFS
Добрый день.

Заметили некую неприятность:
Кэширование отчетов отключено (CacheMode = StiServerCacheMode.None)
Заходим на страничку с отчетом (GetReportSnapshot), жмем, например, печатать с просмотром. Открывается новое окно браузера (с адресом на ViewerEvent), в котором ничего нет, исходный код страницы = пусто.
Включаем кэш (CacheMode = StiServerCacheMode.ObjectCache) и вуаля!) Всё работает.

Вопрос: как заставить работать печать и сохранение при выключенном кэшировании отчетов?

При попытке сохранения отчета в файл, например, в MS Word валимся с такой ошибкой:
Ссылка на объект не указывает на экземпляр объекта.

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.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.]
Stimulsoft.Report.Mvc.StiFileResult.WriteFile(HttpResponseBase response) +27
System.Web.Mvc.FileResult.ExecuteResult(ControllerContext context) +168
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9644097
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Version: 2015.2 from 30 September 2015.

Спасибо.

Re: Печать/сохранить возвращают пустые страницы

Добавлено: 25 авг 2016, 12:57
HighAley
Здравствуйте.

Если вы не используете кэширование, то должны загружать отчёт каждый раз.

Код: Выделить всё

public ActionResult ViewerExportReport()
        {
            StiReport report = new StiReport();
            report.Load(Server.MapPath("~/Reports/SimpleList.mrt"));

            return StiMvcViewer.ExportReportResult(report);
        }
Для печати надо делать то же самое в соответствующем событии.

Если у вас всё ещё будет возникать данная проблема, попробуйте использовать более новую версию, это проблема должны быть исправлена.

Спасибо.