Задание соединений и учетных данных для серверного веб-элемента управления ReportViewer
Чтобы задать соединение элемента управления ReportViewer с сервером отчетов, полезно знать условия, при которых устанавливаются соединения.
Во время запуска, когда загружается веб-страница, содержащая элемент управления ReportViewer, элемент управления соединяется с сервером отчетов, чтобы организовать сеанс отчета, получить или задать значения параметров отчета и возвратить список доступных на сервере модулей подготовки отчетов.
Если элемент управления работает со значением свойства AsyncRendering=true, HTML-код для отчета возвращается асинхронным образом объектом IFrame после подготовки страницы к просмотру.
Если отчет ссылается на внешнее изображение, элемент управления ReportViewer получает изображения путем отдельных запросов с использованием обработчика HTTP-данных ReportViewer, при этом каждый запрос выполняется через собственное соединение.
После подготовки отчета к просмотру могут устанавливаться дополнительные подключения, если готовый к просмотру отчет экспортируется в другой формат. Запрос на экспорт отправляется из обозревателя на сервер отчетов через отдельное соединение.
Успешность всех упомянутых операций зависит от наличия для элемента управления ReportViewer правильных сведений о соединении с сервером отчетов. Способ задания сведений о соединении будет различным в зависимости от того, используется ли проверка подлинности с помощью форм, проверка подлинности Windows, учетные данные текущего пользователя или сеанс ASP.NET.
Задание соединений
Для соединения с сервером можно задать свойства объекта ServerReport или реализовать интерфейсы, задающие соединение, а затем указать реализацию в файле Web.config. Элемент управления ReportViewer всегда сначала считывает файл Web.config и использует значения соединения, если они заданы.
Если включено состояние сеанса, можно задать свойства объекта ServerReport или указать сведения о соединении в файле Web.config. Если сведения о соединении указываются в файле Web.config, не задавайте свойства объекта ServerReport.
Если состояние сеанса отключено, необходимо реализовать интерфейс IReportServerConnection или IReportServerConnection2, а затем указать реализацию в файле Web.config.
![]() |
---|
Для учетной записи, с которой устанавливается соединение, должно существовать допустимое назначение ролей на сервере отчетов. Для создания комплексного набора разрешений используются назначения ролей как на уровне системы, так и на уровне отдельных элементов. Если недостаточно сведений о назначении ролей сервера отчетов, можно руководствоваться учебником, объясняющим основные принципы назначения ролей. Дополнительные сведения см. в разделе Обучающее руководство: Установка разрешений в службах Reporting Services библиотеки MSDN. |
Задание свойств объекта ServerReport
При перетаскивании элемента управления на веб-форму во время разработки в объекте ServerReport можно задать свойства URL-адреса сервера отчетов и времени ожидания.
По умолчанию серверный веб-элемент управления ReportViewer соединяется с сервером отчетов в качестве пользователя потока ASP.NET.
Чтобы соединиться от имени другого пользователя (например, если нужно, чтобы все пользователи соединялись с сервером отчетов по одной учетной записи), реализуйте интерфейс IReportServerCredentials в сериализуемом объекте и передайте экземпляр этого объекта в ReportViewer.ServerReport.ReportServerCredentials. Поскольку элемент управления ReportViewer может соединяться с сервером отчетов после завершения обработки страницы ASP.NET, объект должен поддерживать сериализацию для хранения, если сеанс ASP.NET хранится внепроцессно (например, в базе данных SQL Server).
Учтите, что непосредственное задание свойства ReportViewer.ServerReport.ReportServerCredentials обладает двумя недостатками:
должен быть включен сеанс ASP.NET;
размер сеанса ASP.NET может чрезмерно возрасти, поскольку для каждого пользователя, просматривающего страницу, элемент управления ReportViewer помещает экземпляр объекта в сеанс.
Описанных проблем можно избежать, если указать реализацию интерфейса IReportServerConnection2 в файле Web.config.
Рекомендации по заданию учетных данных, если состояние сеанса отключено, см. в подразделе Рекомендации по хранению учетных данных в случае, когда отключен сеанс ASP.NET в этом разделе.
Задание соединения с сервером отчетов в файле Web.config
В случае реализации интерфейса IReportServerConnection или IReportServerConnection2 необходимо указать реализацию в файле Web.config приложения. Файл Web.config содержит тип объекта, который включает сведения о соединении и учетных данных.
![]() |
---|
Необходимо указать реализацию IReportServerConnection2 или IReportServerConnection, но не IReportServerCredentials. Интерфейс IReportServerConnection2 является производным от IReportServerCredentials и добавляет дополнительные свойства для задания URL-адреса сервера отчетов, значения времени ожидания, а также любых нестандартных файлов cookie и заголовков HTTP. |
Интерфейс IReportServerConnection2 необходим, когда сеанс ASP.NET отключен, но его можно использовать и с включенным сеансом ASP.NET, если необходимо исключить хранение объектов в сеансе. Дополнительные сведения и пример кода см. в разделе справочника по программированию, посвященном IReportServerConnection2. Дополнительные сведения о добавлении записей в файл Web.config см. в разделе Параметры файла web.config для ReportViewer.
В следующей таблице приводится сводка по интерфейсам, передающим учетные данные и сведения о соединении.
Интерфейс | Описание |
---|---|
IReportServerCredentials |
Этот интерфейс можно использовать для задания учетных данных, которые объект ServerReport использует для соединения с сервером отчетов, если не нужно соединяться от имени текущего пользователя. По умолчанию элемент управления ReportViewer соединяется с сервером отчетов в качестве пользователя потока ASP.NET. Можно указать другого пользователя, задав в свойстве ReportViewer.ServerReport.ReportServerCredentials экземпляр собственной реализации интерфейса IReportServerCredentials. |
IReportServerConnection |
Этот интерфейс наследует от интерфейса IReportServerCredentials и содержит дополнительные элементы для задания свойств URL-адреса сервера отчетов и времени ожидания. |
IReportServerConnection2 |
Этот интерфейс наследует от интерфейса IReportServerConnection и содержит дополнительные элементы для задания нестандартных файлов cookie и заголовков. Это полезно, если на сервере отчетов используется продукт с единым входом. |
Рекомендации по хранению учетных данных при отключенном сеансе ASP.NET
Если реализуется интерфейс IReportServerConnection2, не храните учетные данные пользователя в классе. Если учетные данные хранятся в сериализуемом объекте, имя пользователя и пароль будут сериализованы в сеансе ASP.NET и сохранены в базе данных SQL Server или на другом сервере состояний. Сериализация учетных данных не всегда является риском для безопасности, однако она увеличивает контактную зону для возможных атак, поскольку учетные данные хранятся как данные сеанса.
Далее представлены примеры, в которых показано, как избежать хранения учетных данных вместе с другими данными сеанса.
Считывание сохраненных учетных данных из файла конфигурации или другого хранилища конфигураций. Дополнительные сведения и пример кода см. в разделе справочника по программированию, посвященном IReportServerCredentials.
Считывание HTTP-файла cookie из запроса ASP.NET, чтобы получить учетные данные, которые меняются в зависимости от клиента.
![]() |
---|
Можно выбрать один из многих вариантов хранения учетных данных вне класса, но необходимо обеспечить, чтобы последовательные запросы в пределах одного сеанса отчета возвращали одни и те же учетные данные. |
См. также
Справочник
IReportServerCredentials
IReportServerConnection2
Понятия
Параметры файла web.config для ReportViewer
Настройка ReportViewer для асинхронной подготовки отчетов
Вопросы развертывания серверных отчетов
Настройка ReportViewer для удаленной обработки
Добавление и настройка элементов управления ReportViewer