Параметры файла web.config для ReportViewer

Если используется серверный веб-элемент управления ReportViewer, можно задать параметры приложения ASP.NET в файле Web.config для настройки ReportViewer во время выполнения. В этом разделе описаны параметры приложения Web.config, которые используются для соединения с удаленным сервером отчетов, хранения временных потоков и передачи пользовательских строк для интерфейса элемента управления. Также приведены рекомендации по использованию параметров <sessionState> и <machineKey> для приложений ReportViewer, работающих в веб-фермах, и показано, как в разделе <httpHandlers> файла Web.config определены параметры обработчика HTTP-данных, используемого серверным веб-элементом управления ReportViewer.

Настройка элементов <appSettings> для элементов управления ReportViewer

Чтобы настроить пользовательские параметры приложения для серверного веб-элемента управления ReportViewer, можно добавить следующие ключи в раздел <appSettings> файла приложения Web.config. Значением этих ключей является полное имя класса, реализующего определенный интерфейс.

Ключ Использование

ReportViewerServerConnection

Этот ключ задает класс, реализующий интерфейс IReportServerConnection. Этот интерфейс предоставляет данные о соединении с сервером отчетов, когда состояние сеанса отключено или когда не нужно сохранять сведения о соединении в сеансе ASP.NET. Если все отчеты, используемые в приложении, обрабатываются на одном сервере отчетов, будет более эффективным использовать ключ ReportViewerServerConnection, чтобы однократно указать сведения о соединении в файле Web.config, а не хранить свойства ReportServerUrl и TimeOut для каждого объекта ServerReport в сеансе.

ReportViewerTemporaryStorage

Этот ключ задает класс, реализующий интерфейс ITemporaryStorage. Этот интерфейс используется для хранения временных потоков, которые отправляются сервером отчетов, вместо хранения их в памяти. Таким образом, повышается масштабируемость приложения.

ReportViewerMessages

Этот ключ задает класс, реализующий интерфейс IReportViewerMessages. Этот интерфейс используется для передачи сообщений настраиваемого пользовательского интерфейса.

Указание полного класса

Значением каждого ключа является класс, реализующий интерфейс, и расположение сборки, содержащей этот класс. В ASP.NET доступно несколько способов для указания класса с помощью следующего синтаксиса:

<add key="MyKeyName" value="MyNamespace.MyClass, Location" />

Если класс реализован в сборке, она может быть расположена в папке Bin приложения или глобальном кэше сборок. В этом случае в качестве значения ключа нужно указать полное имя сборки, включающее значения маркеров версии, языка, культуры, а также открытого ключа. Если же класс реализован в файле исходного кода, находящемся в папке APP_CODE приложения, то в качестве расположения нужно указать эту папку.

В следующих примерах показаны допустимые способы указания полного класса в глобальном кэше сборок, в папке Bin приложения или в папке APP_CODE.

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken= 00000000000000000 "/>

-- ИЛИ --

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly"/>

-- ИЛИ --

<add key="ReportViewerServerConnection" value=" MyNamespace.MyClass, APP_CODE"/>

ReportViewerServerConnection

Если для передачи сведений о соединении с сервером отчетов реализуется интерфейс IReportServerConnection или IReportServerConnection2, в файле Web.config необходимо определить ключ ReportViewerServerConnection. Этот ключ указывает пользовательский класс, который реализует интерфейс IReportServerConnection, и расположение сборки или исходного файла, содержащих этот класс.

Если класс указывается в ключе ReportViewerServerConnection, необходимо убедиться, что не заданы другие свойства для объекта ServerReport, которые могут конфликтовать с ключом. В частности, не следует задавать свойства ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies и ServerReport.Headers.

В следующем примере показан синтаксис ключа ReportViewerServerConnection. Здесь указывается класс, реализующий интерфейс IReportServerConnection2 в сборке с именем MyAssembly, расположенной в папке Bin приложения:

<appSettings>
    <add key="ReportViewerServerConnection" value="MyNamespace.MyRVServerConnectionClass, MyAssembly"/>
</appSettings>

Пример кода для класса, реализующего интерфейс IReportServerConnection, см. в разделе Задание соединений и учетных данных для серверного веб-элемента управления ReportViewer.

ReportViewerTemporaryStorage

Необходимо задать ключ ReportViewerTemporaryStorage, чтобы указать объект, реализующий интерфейс ITemporaryStorage. Реализуйте этот интерфейс, чтобы сохранять временные потоки, отправляемые сервером отчетов, а не держать их в памяти. Поскольку каждый запрос необходимо выполнить до того, как запустится новый запрос, в любой момент времени хранится только текущая страница. Этот параметр используется только для серверных отчетов. В следующем примере показан синтаксис для ключа ReportViewerTemporaryStorage.

<appSettings>
    <add key="ReportViewerTemporaryStorage" value="MyNamespace.MyTemporaryStorageClass, MyAssembly" />
</appSettings>

ReportViewerMessages

Необходимо задать ключ ReportViewerMessages, чтобы указать объект, реализующий интерфейс IReportViewerMessages, который передает пользовательские строки в элемент управления ReportViewer. Этот интерфейс можно использовать для поддержки локализации строк на языки, не поддерживаемые по умолчанию. В следующем примере показан синтаксис ключа ReportViewerMessages.

<appSettings>
    <add key="ReportViewerMessages" value="MyNamespace.MyRVMessageClass, MyAssembly" />
</appSettings>

Настройка элементов <system.web> для элементов управления ReportViewer

В файле приложения Web.config можно определить параметры в разделе <system.web>, чтобы определить режим работы сеанса отчета во время выполнения. Элемент управления ReportViewer также использует этот раздел, чтобы зарегистрировать параметры для обработчика HTTP-данных, предоставляемого элементом управления. Используются следующие элементы: <sessionState>, <machineKey> и <httpHandler>.

<sessionState>

Элемент sessionState показывает состояние сеанса: хранится в процессе, отключен или обрабатывается внепроцессной службой состояний ASP.NET.

По умолчанию имеет значение InProc, которое можно использовать, если приложение работает на одном компьютере. Не используйте это значение, если отчеты выполняются в приложении, которое работает в веб-ферме.

Значение Off нельзя использовать, если элемент управления ReportViewer обрабатывает RDLC-файл в локальном режиме. Для локального режима необходимо состояние сеанса. Если используется удаленный режим, состояние сеанса можно отключить. Если отключить состояние сеанса, необходимо указать свойство ReportViewerServerConnection в элементе <appSetting>.

Также можно использовать другие режимы <sessionState>: Custom, SQLServer и StateServer.

<machineKey>

Если элемент управления ReportViewer развертывается в веб-ферме или в кластере, необходимо указать элемент <machineKey>, чтобы все узлы в ферме использовали один идентификатор процесса. Это позволяет гарантировать, что состояние просмотра, сохраненное на одном компьютере, будет возможно прочитать на любом другом компьютере.

NoteПримечание.

Настройка элемента <machineKey> для синхронизации состояния просмотра в веб-ферме рекомендуется в документации по платформе Microsoft .NET Framework 2.0. Дополнительные сведения о настройке проверки состояния просмотра для сети веб-служб см. в разделе Элемент machineKey (схема параметров ASP.NET).

В платформе .NET Framework 2.0 проверка состояния просмотра включена по умолчанию, и для выполнения проверки используются сведения об идентификаторе процесса ASP.NET. Проверка по идентификатору процесса не работает в сценарии с кластером или веб-фермой, где идентификатор процесса для каждого узла различен. Чтобы все узлы использовали один идентификатор процесса, можно создать ключ проверки для поддержки проверки состояния просмотра, а затем вручную настроить каждый узел для использования этого ключа.

  1. Создайте ключ проверки. Можно использовать функцию автоформирования, предоставляемую платформой .NET Framework, или создать ключ другим способом. Не используйте параметр AutoGenerate, если задан атрибут validationKey.

  2. Создайте ключ расшифровки. Ключ расшифровки можно задать явно или указать значение AutoGenerate для атрибута decryptionKey.

  3. Откройте файл Web.config для каждого узла в веб-ферме и задайте элемент machineKey. Необходимо указать ключ проверки, ключ расшифровки и тип шифрования, используемый для проверки данных.

  4. Повторите эти шаги для каждого узла в веб-ферме или кластерном развертывании.

<httHandlers>

Серверный веб-элемент управления ReportViewer содержит обработчик HTTP-данных, который используется для вывода изображений, внедренных в отчет или упоминаемых в нем, экспорта отчетов в другие выходные форматы, предоставления элемента управления календаря, который используется для выбора дат для параметра отчета, и поддержания сеанса отчета в открытом состоянии.

Параметры конфигурации для обработчика HTTP-данных указываются в элементе httpHandlers файла приложения Web.config. Параметры конфигурации вводятся в файл Web.config автоматически, если перетащить серверный веб-элемент управления ReportViewer из области элементов на веб-страницу.

Конфигурацию обработчика HTTP-данных нельзя удалить или изменить. Если изменить или удалить параметры <httpHandlers> в файле Web.config, серверный веб-элемент управления ReportViewer выведет следующую ошибку во время просмотра ASPX-страницы: «Обработчик HTTP-данных веб-элемента управления ReportViewer не зарегистрирован в файле Web.config приложения». В сообщении об ошибке включены данные конфигурации, необходимые обработчику HTTP-данных. Эти параметры можно без изменений скопировать в файл Web.config. В следующем примере показана типичная строка (сведения о версии и маркер PublicKeyToken будут отличаться):

<httpHandlers>
   <add path="Reserved.ReportViewerWebControl.axd" verb="*" 
   type="Microsoft.Reporting.WebForms.HttpHandler, 
   Microsoft.ReportViewer.WebForms, Version=8.0.0.0, 
   Culture=neutral, PublicKeyToken=0000000000000000" validate="false" 
   />
</httpHandlers>

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

См. также

Понятия

Добавление и настройка элементов управления ReportViewer
Развертывание отчетов и элементов управления ReportViewer