Проблема с StiMvcViewer

Обсуждение Stimulsoft Reports.WEB
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Проблема с StiMvcViewer

Сообщение DmitryRu »

Не могу запустить проект из каталога Samples.
Продукт: Stimulsoft Reports.Web, версия 2014.3
C:\Program Files\Stimulsoft Reports.Web 2014.3 Trial\Samples\ASP.NET MVC\HTML\Using Viewer, Razor

Взял чистую машину, установил на нее Visual Studio 2013 SP2 Ultimate.
Открыл проект, получил информацию о конвертации проекта
convert.jpg
convert.jpg (199.3 КБ) 5743 просмотра
Для начала, проект не запускается с ASP.NET MVC 4, несмотря на новость
http://www.stimulsoft.com/ru/news/chang ... quirements
Проект не совместим с ASP.NET MVC 4
Пришлось дополнительно установить ASP.NET MVC 3 отсюда
http://www.microsoft.com/en-us/download ... px?id=1491

При открытии проекта в Visual Studio получаем предупреждение:
warn.jpg
warn.jpg (155.87 КБ) 5743 просмотра
Подскажите, зачем эта демка требует какой-то там БД? Ведь все происходит в коде, а у меня нет SQL Server Express, и не предвидится.

Далее, проект компилируется и запускается, после чего выдает только лишь сообщение об ошибке:

System.ArgumentNullException was unhandled by user code
HResult=-2147467261
Message=Value cannot be null.
Parameter name: key
Source=mscorlib
ParamName=key
StackTrace:
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.GetLiteralTraceData(LiteralControl literal, TraceData& data)
at Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.GetTraceData(Object renderedObject)
at Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.BeginRendering(TextWriter writer, Object renderedObject)
at System.Web.UI.RenderTraceListener.RenderTraceListenerList.BeginRendering(TextWriter writer, Object renderedObject)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
at System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)
at System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer)
at Stimulsoft.Report.Mvc.StiMvcViewer.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at Stimulsoft.Report.Mvc.StiMvcHelper.StiMvcViewer(String ID, StiMvcViewerOptions options)
at Stimulsoft.Report.Mvc.StiMvcHelper.StiMvcViewer(StiMvcViewerOptions options)
at ASP._Page_Views_Home_Index_cshtml.Execute() in c:\Using Viewer, Razor\Using Viewer, Razor\Views\Home\Index.cshtml:line 29
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.StartPage.RunPage()
at System.Web.WebPages.StartPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
InnerException:

Т.е. ничего не рисуется, сразу получаем это сообщение.
Причем до ближайшего ребилда проект переходит в такое состояние
viewbag.jpg
viewbag.jpg (336.01 КБ) 5743 просмотра
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Re: Проблема с StiMvcViewer

Сообщение DmitryRu »

А вообще, попытка обратиться к данной демке вызвана тем, что попытка встроить компонент StiMvcViewer в свое приложение таким вот образом:

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

@using Stimulsoft.Report.Mvc;
@{
    Layout = null;
}
<!doctype html>
<html>
<head>
    <title>Просмотр отчета</title>
</head>

<body>
    <h2>Некое сообщение</h2>
    <br />
    @Html.Stimulsoft().StiMvcViewer(
    "MvcViewer",
        new StiMvcViewerOptions
    {
        ActionGetReportSnapshot = "GetReportSnapshot"
        , Localization = "~/Views/Shared/Reporting/Localization/ru.xml"
    })
</body>
</html>
приводит к тому, что получающаяся html страничка генерит запросы:

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

http://localhost:20242/StiView/?mvcviewer_resource=scripts
Страничка находится по адресу http://localhost:20242/StiView/ShowReport. Т.е. первая часть адреса до какой-то степени понятна, но что за зверь" ?mvcviewer_resource=scripts"? У меня в приложении такого нет.
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Проблема с StiMvcViewer

Сообщение Vladimir »

Здравствуйте Дмитрий,

Данный запрос загружает скрипты вьювера. Для корректной работы необходимо определить два действия:
ActionGetReportSnapshot
ActionViewerEvent

У вас определено только первое действие.

Спасибо.
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Re: Проблема с StiMvcViewer

Сообщение DmitryRu »

Спасибо, и правда стало чуть лучше.
Теперь картинки не загружаются, тоже куча запросов по левым адресам
400.jpg
400.jpg (253.85 КБ) 5738 просмотров

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

@using Stimulsoft.Report.Mvc;
@{
    Layout = null;
}
<!doctype html>

<html>
<head>
    <title>Просмотр отчета</title>
</head>

<body>
    <h2>Некое сообщение</h2>
    <br />
    @Html.Stimulsoft().StiMvcViewer(
    "MvcViewer",
        new StiMvcViewerOptions
    {
        ActionGetReportSnapshot = "GetReportSnapshot"
        , ActionViewerEvent = "ViewerEvent"
        , Localization = "~/Views/Shared/Reporting/Localization/ru.xml"
    })
</body>
</html>

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

        public ActionResult ShowReport()
        {
            return View("~/Views/Shared/Reporting/StiMvcViewer.cshtml");
        }

        public ActionResult GetReportSnapshot()
        {
            return StiMvcViewer.GetReportSnapshotResult(HttpContext, new StiReport());
        }

        public ActionResult ViewerEvent()
        {
            return StiMvcViewer.ViewerEventResult(HttpContext);
        }
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Re: Проблема с StiMvcViewer

Сообщение DmitryRu »

Ура!
Нашел вот такую тему:
http://forumru.stimulsoft.com/viewtopic.php?f=13&t=4109
обновил библиотеки Стимулсофт, и все заработало как надо, вопрос с неработоспособностью моего кода снят.

Правда остается все же ряд вопросов.
1) StiMvcViewer требует MVC 4 или MVC 3?
2) Картинки для StiMvcViewer все еще запрашиваются отдельными HTTP запросами, вроде это было обещано сделать одним HTTP запросом?
3) Эта конструкция:

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

        new StiMvcViewerOptions
    {
        ActionGetReportSnapshot = "GetReportSnapshot"
        , ActionViewerEvent = "ViewerEvent"
    })
сейчас выдает warning, что ActionGetReportSnapshot устарел, хотелось бы видеть пример с новым синтаксисом

4) Внезапно StiMvcMobileViewer стал пустым классом, например, у него нет метода StiMvcMobileViewer.ViewerEventResult(HttpContext);
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Проблема с StiMvcViewer

Сообщение Vladimir »

Здравствуйте Дмитрий,

> 1) StiMvcViewer требует MVC 4 или MVC 3?
Достаточно MVC 2 или выше, но с релиза 2014.2 требуется .NET Framework 4 как минимально необходимый для всех наших компонентов.

> 2) Картинки для StiMvcViewer все еще запрашиваются отдельными HTTP запросами, вроде это было обещано сделать одним HTTP запросом?
В последнем пререлиз билде 2014.3.18 все изображения должны загружаться одним запросом. Пожалуйста, укажите что именно загружается отдельными запросами?

> 3) Эта конструкция сейчас выдает warning, что ActionGetReportSnapshot устарел, хотелось бы видеть пример с новым синтаксисом
Новая документация будет доступна в новом релизе 2015.1, который уже практически готов. Идет финальное тестирование.
Все опции были сгруппированы для удобства использования. Вы можете использовать такую конструкцию:

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

    new StiMvcViewerOptions
    {
        Actions =
        {
             GetReportSnapshot = "GetReportSnapshot",
             ViewerEvent = "ViewerEvent"
        }
    })
> 4) Внезапно StiMvcMobileViewer стал пустым классом, например, у него нет метода StiMvcMobileViewer.ViewerEventResult(HttpContext);
Пожалуйста укажите версию билда, который вы тестировали. Это ошибка, данный компонент и его методы должны быть помечены как устаревшие. Обновлённый MvcViewer теперь в полной мере поддерживает Touch интерфейс, необходимость в MvcMobileViewer отпадает

Спасибо.
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Re: Проблема с StiMvcViewer

Сообщение DmitryRu »

Видимо, у меня на машине есть некая проблема с тем, что версия 2014.3 официальная поставила .dll-ки в GAC, а последнюю версию библиотек стимулсофт, 2014.3.18, я бросил прямо в проект.

И потому 2) после нескольких ребилдов не воспроизводится, т.е. один HTTP запрос делается, что гуд.

4) Видимо из той же примерно серии, метод StiMvcMobileViewer.ViewerEventResult(HttpContext); появился, но @obsolete не вижу.
Да в целом и ладно, когда выйдет релиз, все установится в GAC и проблемы пропадут.

Еще раз спасибо за ответы.
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Проблема с StiMvcViewer

Сообщение Vladimir »

Здравствуйте Дмитрий,

Всегда рады помочь.
Надеемся, обновлённый вьювер отчетов подойдёт для ваших проектов!
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Re: Проблема с StiMvcViewer

Сообщение DmitryRu »

Все-таки выскажу мысль вслух, по поводу моей изначальной ошибки, что я забыл указать действие "ActionViewerEvent".
Мне кажется, если компонент неправильно сконфигурирован, он должен сообщать об этом явно.
Компонент StiMvcViewer , как мне кажется, не функционален без свойства "ActionViewerEvent".
Если бы он явно выбросил мне исключение "не могу работать, задайте св-во ActionViewerEvent", то я бы не беспокоил Вас.
Уверен, я такой не один :-)
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Проблема с StiMvcViewer

Сообщение Vladimir »

Здравствуйте Дмитрий,

Ваше пожелание отправлено команде разработчиков.

Спасибо.
Ответить