Браузер: настройки фильтра теряются с моим пользовательским ReportViewer и веб-конфигурацией

Проблема
Использование SSRS по умолчанию Report.aspx и webconfig, state1 и state2 (ниже) равны.
Мой пользовательский файл report.aspx с изменениями в webconfig, state1 и state2 ниже не совпадают. равный.

Вероятная причина
Информация о сеансе может не сохраняться из-за изменения параметров веб-конфигурации..?
Это становится видимым, когда я просматриваю отчеты, а затем использую кнопку возврата в браузере.

Конкретный сценарий:

  1. Открытый отчет (имеет параметры/фильтры, например, год: 2012)
  2. Изменить значения фильтра по умолчанию, например. установить год на 2011 (+отправить) [ = state1 ]
  3. Перейти к подробному отчету
  4. Вернуться назад (год снова установлен на 2012) [ = state2 ]

При использовании SSRS по умолчанию report.aspx возврат (шаг 4) — это 2012 год, как и ожидалось. Однако с моим пользовательским aspx webconfig + ReportViewer фильтры отличаются от предыдущих (снова 2011 г.).

Мои изменения в web.config для обхода ранее обнаруженной ошибки:

Тип Microsoft.ReportingServices.UI.WebControlConnection, ReportingServicesWebUserInterface, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91 не реализует IReportServerConnection

В web.config теперь есть:

<appSettings>
    <add key="ReportViewerServerConnection" value="Microsoft.ReportingServices.UI.WebControlConnection, ReportingServicesWebUserInterface, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <add key="ReportViewerTemporaryStorage" value="Microsoft.ReportingServices.UI.ReportViewerTemporaryStorage, ReportingServicesWebUserInterface, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <clear/><!-- added -->
</appSettings>

Чтобы обойти ошибку:

В удаленном режиме элемент управления Report Viewer требует, чтобы состояние сеанса было включено или информация о соединении с сервером отчетов была указана в файле конфигурации.

Я изменился:

<httpModules>
    <clear />
    <add name="Session"  type="System.Web.SessionState.SessionStateModule"/><!-- added -->
    ...
    ...
</httpModules>

Буду рад получить ваши мысли и/или предложения/решения.

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

Шаг 1 (= Шаг 4 настраиваемый)
настройка параметров на шаге 1

Шаг 2 (= шаг 4 по умолчанию, желательно)
настройка параметров на шаге 2

Шаг 4: возвращение к ssrs по умолчанию дает мне шаг 2 (по желанию), с моим пользовательским дает мне шаг 1. Я хотел бы вернуться к шагу 2 также с моей пользовательской страницей.

Обновление
Исследование с помощью WebkitInspector

В ssrs по умолчанию aspx, возвращаясь в браузере (желаемая функциональность):

Изначально фильтры также находятся в состоянии по умолчанию, но сервер прописывает на странице дополнительный JS, который инициирует обновление фильтров до предыдущих настроек. Дело в том, что я не знаю, как «автоматически» писать эти дополнительные JS (я думаю, что это связано с сеансом/историей, а не с программным сохранением и проверкой истории).

Далее мне было предложено:

  1. используйте панели инструментов разработчика или fiddler/wireshark для исследования параметров сеанса.
  2. запрос ReportServerTempDb

Я попробую № 1, хотя я действительно не уверен, с чего начать № 2.

Обновление:
По-видимому, только в IE есть некоторый BrowserNavigationCorrector.js. Когда вы визуализируете страницу, сначала выполняется инициализация, которая выполняет setTimeout('doInitialize',0). После этого - перед выполнением doInitialize - страница пишет/отрисовывает JS: add_init(*NavigationCorrectioncode*); В doInit NavigationCorrector проверяет PageState (в OnAppLoad()), который еще НЕ имеет значение "Загружено". Затем происходит все остальное, и состояние страницы получает значение Loaded.

Затем, когда вы переходите к подотчету и нажимаете ответ, страница имеет в памяти состояние «Загружено». Поэтому, когда NavigationCorrector выполняет свой код, а состояние страницы IS Loaded, он запускает скрипт TriggerPostBack. Это, в свою очередь, выполняет обратный вызов, который обновляет значения параметров.

При использовании WebForms.dll v11 BrowserNavigationCorrector.js не существует. Кроме того, при использовании Chrome он также не включен ни в собственный SSRS, ни в dll.

В принципе, я могу попытаться включить этот файл вручную, или в настоящее время я пытаюсь загрузить VS2013, который, надеюсь, имеет улучшенную версию dll, может быть, v12 ..?


person EricG    schedule 11.12.2012    source источник
comment
Я пытаюсь понять, почему это такая проблема. Стоит ли тратить время на изучение проблемы?   -  person Neil    schedule 11.12.2012
comment
Определенно, я был бы очень признателен. Кстати, изменения в webconfig мешают другим страницам, в результате чего файл по умолчанию и мой report.aspx не могут сосуществовать.   -  person EricG    schedule 11.12.2012
comment
Не могли бы вы немного прояснить проблему/ваши ожидания? Когда вы нажмете кнопку «Назад» в браузере, вы ожидаете, что параметры будут сброшены на (а) их значения по умолчанию или (б) значение, которое вы установили для них, когда вы покидали страницу?   -  person Jeroen    schedule 13.12.2012
comment
Я обновил последнюю строку (из обновления 1), т.е. (б) из вашего комментария ^ Затем я добавил еще одно обновление   -  person EricG    schedule 13.12.2012


Ответы (1)


Я думаю, что это ошибка в DLL. Один раз пытался создать тикет, но он где-то застрял в процессе. Возможно, это было исправлено в более новых версиях.

person EricG    schedule 11.09.2015