Поделиться через


Параметры файла 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.

Также можно указать класс, в котором реализован интерфейс IReportServerConnection2, что позволяет указывать файлы cookie и пользовательские заголовки.

ReportViewerTemporaryStorage

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

ReportViewerMessages

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

В Visual Studio 2010 в элемент управления ReportViewer добавлен новый интерфейс [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3. Чтобы использовать все сообщения пользовательского интерфейса, предоставляемые элементом управления ReportViewer, укажите здесь класс, в котором реализован интерфейс IReportViewerMessages3.

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

Значением каждого ключа является класс, реализующий интерфейс, и расположение сборки, содержащей этот класс. В 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>, чтобы все узлы в ферме использовали один идентификатор процесса. Это позволяет гарантировать, что состояние просмотра, сохраненное на одном компьютере, будет возможно прочитать на любом другом компьютере.

Примечание

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

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

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

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

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

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

<httHandlers>

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

Параметры конфигурации для обработчиков HTTP-данных указываются в элементе system.web/httpHandlers и элементе system.webServer/handlers файла Web.config приложения. Обработчик, указанный в элементе system.web/httpHandler, используется службами IIS 6.0 или IIS 7.0 в классическом режиме, а обработчик, указанный в элементе system.webServer/handlers, используется службами IIS 7.0 в интегрированном режиме. Параметры конфигурации вводятся в файл Web.config автоматически, если перетащить серверный веб-элемент управления ReportViewer из области элементов на веб-форму. Обработчики HTTP-данных являются частью элемента управления. Их нельзя удалить или заменить.

Важно!

Для использования служб IIS 7.0 в интегрированном режиме необходимо удалить обработчик HTTP-данных в элементе system.web/httpHandlers. В противном случае службы IIS не запустят приложение и выведут сообщение об ошибке.

Необходимо хранить обработчик HTTP-данных, который применяется к версии служб IIS, в соответствующем разделе. Если удалить или изменить параметры конфигурации обработчика HTTP-данных, то серверный веб-элемент управления ReportViewer на веб-форме выведет сообщение об ошибке, в котором будет сказано, что обработчик нужно вернуть в соответствующий раздел файла web.config. Далее показаны обработчики HTTP-данных в элементах system.web/httpHandlers и system.webServer/handlers.

<system.web>
   <httpHandlers>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" 
      type="Microsoft.Reporting.WebForms.HttpHandler, 
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" 
      />
   </httpHandlers>
</system.web>
<system.webServer>
   <handlers>
      <add name="ReportViewerWebControlHandler" 
      preCondition="integratedMode"
      verb="*" path="Reserved.ReportViewerWebControl.axd" 
      type="Microsoft.Reporting.WebForms.HttpHandler, 
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
      />
</handlers>
</system.webServer>

См. также

Основные понятия

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

Развертывание отчетов и элементов управления ReportViewer

Другие ресурсы

httpHandlers

handler