Не удается развернуть или загрузить большой отчет SSRS 2008 из VS или IE - PullRequest
2 голосов
/ 10 февраля 2010

Пока в этом проекте у меня есть два отчета в VS2008 / BIDS. Первый содержит 1 табликс и составляет около 100к. Второй содержит 3 табликса (tablices?) И составляет около 257 тыс. Я могу успешно развернуть меньший отчет из VS, и я могу загрузить его из диспетчера отчетов в IE. Я могу просмотреть / запустить его из диспетчера отчетов, и я могу получить URL-адрес сервера отчетов (веб-службы) из моего браузера просто отлично. Все сделано по HTTPS, и с сертификатами все в порядке.

При большем отчете я получаю сообщение об ошибке "VS время истекло" примерно через 100 секунд. Ошибка при загрузке из IE: «Базовое соединение было закрыто: при отправке произошла непредвиденная ошибка» примерно через 130 секунд.

В файле RSReportServer.config я попытался изменить Authentication / EnableAuthPersistence с true на false и перезапустить службу, но все равно получил ошибку. У меня есть ключ "SecureConnectionLevel", установленный на 2. Изменение этого значения на 0 и отключение SSL не будет возможным. Я добавил раздел реестра с именем «MaxRequestBytes» в HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters и установил для него значение 5242880 (5 МБ) и перезапустил службы HTTP и SRS, как было предложено в сообщении на форуме Джина Чена из MSFT.

Я все еще не могу загрузить отчет большего размера. Это на MS SQL 2008 и WS 2003. Ниже приведена часть записи файла журнала из ... \ Reporting Services \ LogFiles при попытке загрузки из IE.

library!WindowsService_0!89c!02/10/2010-07:57:57:: i INFO: Call to CleanBatch() ends
ui!ReportManager_0-1!438!02/10/2010-07:59:33:: e ERROR: The underlying connection was closed: An unexpected error occurred on a send.
ui!ReportManager_0-1!438!02/10/2010-07:59:34:: e ERROR: HTTP status code --> 500
-------Details--------
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. 
---> System.IO.IOException: Unable to write data to the transport connection: An established connection was aborted by the software in your host machine. 
---> System.Net.Sockets.SocketException: An established connection was aborted by the software in your host machine
   at System.Net.Sockets.Socket.MultipleSend(BufferOffsetSize[] buffers, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[] buffers)
   --- End of inner exception stack trace ---
   ...

1 Ответ

6 голосов
/ 18 февраля 2010

Я думаю, что понял это. Запись в блоге об увеличении максимального количества байтов запроса, указанного для добавления раздела реестра с именем «MaxRequestBytes» в HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters, что я и сделал, а затем перезапустил соответствующие службы. Поскольку у меня все еще была проблема, я продолжал искать решение, и, как оказалось, «MaxRequestBytes» должен быть добавлен не как раздел реестра, а как значение DWORD. См. Настройки реестра Http.sys для IIS для получения дополнительной информации. Для MaxRequestLength значением по умолчанию является 16384, а максимальное - 16777216 (16 МБ). У меня установлено значение 1048576 (1 МБ).

Еще одна вещь, на которую я обратил внимание, это атрибут maxRequestLength в Элемент .

Последнее, что нужно было проверить, было то, что HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ EnableTCPChimney уже был установлен в 0.

Сервер был перезагружен по другой причине после внесения изменений в реестр MaxRequestLength, и теперь я могу загружать все отчеты, включая более крупные, все через HTTPS.

...