2

到目前为止,在这个项目中,我在 VS2008/BIDS 中有两个报告。第一个包含 1 个 tablix,大约 100k。第二个包含 3 个 tablix(tablices?),大约 257k。我可以从 VS 成功部署较小的报告,并且可以从 IE 的报告管理器上传它。我可以从报表管理器查看/运行它,并且可以从我的浏览器访问报表服务器(Web 服务)URL。一切都是通过 HTTPS 完成的,证书没有任何问题。

使用较大的报告,我在 VS 中得到的错误是大约 100 秒后“操作已超时”。我从 IE 上传时的错误是大约 130 秒后“底层连接已关闭:发送时发生意外错误”。

在 RSReportServer.config 文件中,我尝试将 Authentication/EnableAuthPersistence 从 true 更改为 false 并重新启动服务,但仍然出现错误。我将密钥“SecureConnectionLevel”设置为 2。将其更改为 0 并关闭 SSL 将不是一个选项。我在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters 中添加了一个名为“MaxRequestBytes”的注册表项,并将其设置为 5242880 (5MB),并按照 MSFT 的 Jin Chen 在论坛帖子中的建议重新启动了 HTTP 和 SRS 服务。

我仍然无法上传更大的报告。这是在 MS SQL 2008 和 WS 2003 上。下面是我尝试从 IE 上传时来自 ...\Reporting Services\LogFiles 的日志文件条目的一部分。

library!WindowsService_0!89c!02/10/2010-07:57:57::i 信息:对 CleanBatch() 的调用结束
ui!ReportManager_0-1!438!02/10/2010-07:59:33::e 错误:底层连接已关闭:发送时发生意外错误。
ui!ReportManager_0-1!438!02/10/2010-07:59:34:: e 错误:HTTP 状态码 --> 500
-  -  - -细节 -  -  -  - 
System.Net.WebException:基础连接已关闭:发送时发生意外错误。
---> System.IO.IOException:无法将数据写入传输连接:已建立的连接被主机中的软件中止。
---> System.Net.Sockets.SocketException:已建立的连接被主机中的软件中止
   在 System.Net.Sockets.Socket.MultipleSend(BufferOffsetSize[] 缓冲区,SocketFlags socketFlags)
   在 System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[] 缓冲区)
   --- 内部异常堆栈跟踪结束 ---
   ...
4

1 回答 1

6

我想我想通了这一点。关于增加最大请求字节数的博客条目说明了将名为“MaxRequestBytes”的注册表项添加到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters,我这样做了,然后重新启动了相应的服务。由于我仍然遇到问题,我一直在寻找解决方案,结果证明,“MaxRequestBytes”不应该作为注册表项添加,而是作为 DWORD 值添加。有关详细信息,请参阅IIS 的 Http.sys 注册表设置。对于 MaxRequestLength,默认值为 16384,最大值为 16777216 (16 MB)。我的设置为 1048576 (1 MB)。

我查看的另一件事是 < httpRuntime in C:\Program Files\Microsoft SQL Server\MSRS10.SWA\Reporting Services\ReportServer\web.config 中的 maxRequestLength 属性,其默认值为 4096 KB (4 MB),即足够大。参考:<httpRuntime> 元素

最后要验证的是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableTCPChimney 已经设置为 0。

在更改 MaxRequestLength 注册表后,服务器因另一个原因重新启动,我现在可以通过 HTTPS 上传所有报告,包括较大的报告。

于 2010-02-17T21:13:01.873 回答