我有一个将照片数据存储在数据库中的应用程序。 SSRS报告用于生成与特定实体相关的照片报告。生成此报告所需的信息存储在单独的数据库中,并且非常简单地将ReportId与许多照片相关联。 Reporting Services执行Web服务用于以Word格式呈现报表,并输出一个字节数组,然后由应用程序使用。
问题是,有一个非常清晰且可重复的大小限制,超出该限制,应用程序不会收到报告。在每种情况下,报告都会成功呈现,但不会根据RS日志发送响应:
rshost!rshost!1bfc!03/14/2018-21:46:48:: e ERROR: HttpPipelineCallback::SendResponse(): failed writing response.
rshost!rshost!1bfc!03/14/2018-21:46:48:: e ERROR: Failed with win32 error 0x0057, pipeline=0x0000027542592740.
httpruntime!ReportServer_0-1!1bfc!03/14/2018-21:46:48:: e ERROR: Failed in
BaseWorkerRequest::SendHttpResponse(bool), exception=System.ArgumentException: Value does not fall within the expected range.
at Microsoft.ReportingServices.HostingInterfaces.IRsHttpPipeline.SendResponse(Void* response, Boolean finalWrite, Boolean closeConn)
at ReportingServicesHttpRuntime.BaseWorkerRequest.SendHttpResponse(Boolean finalFlush)
library!ReportServer_0-1!1bfc!03/14/2018-21:46:48:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerHttpRuntimeInternalException: RsWorkerRequest::FlushResponse., Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerHttpRuntimeInternalException: An internal or system error occurred in the HTTP Runtime object for application domain ReportServer_SSRS_0-1-131655000672564770. ---> System.ArgumentException: Value does not fall within the expected range.
at ReportingServicesHttpRuntime.BaseWorkerRequest.SendHttpResponse(Boolean finalFlush)
at ReportingServicesHttpRuntime.RsWorkerRequest.FlushResponse(Boolean finalFlush)
--- End of inner exception stack trace ---;
rshost!rshost!1bfc!03/14/2018-21:46:48:: e ERROR: HttpPipelineCallback::SendResponse(): failed writing response.
rshost!rshost!1bfc!03/14/2018-21:46:48:: e ERROR: Failed with win32 error 0x10DD, pipeline=0x0000027542592740.
这似乎与服务http响应的某些大小限制直接相关,原因如下:
是否有人使用RS网络服务遇到类似行为?我在网上广泛搜索没有任何运气。任何关于如何解决这个问题的建议都将不胜感激。
答案 0 :(得分:0)
Microsoft最终确定HttpSendResponseEntityBody是错误的来源。该函数发送与HTTP响应关联的实体主体数据,并根据MSDN具有以下参数:
EntityChunkCount [in] pEntityChunks指向的数组中的许多结构。 此计数不能超过9999。
Microsoft没有任何SSRS文档可以解决报告大小限制问题。在这个阶段,他们所做的就是建议"我们可以使用其他工具进行数据提取。并且通常我们建议将数据小于100MB或行数小于1,000,000"。