我们有 ssrs 服务,执行超时设置为 2.5 小时。我们还在调用 ReportExecutionService render() 方法之前将超时设置设置为 12 小时。
问题是,每次任何 ssrs 运行超过 1 小时时,都无法将调用返回给调用方。
SSRS 执行日志显示报告已成功完成,但它永远不会将结果返回给调用方。呼叫者在等待 12 小时后超时。1 小时内的所有报告都能正常执行并返回呼叫。
任何人都可以建议在哪里寻找问题吗?
<system.web>
<httpRuntime executionTimeout = "9000" /> //2.5hr
</system.web>
SSRS Web 服务的 C# 调用方
// Initialize Reporting Service
ReportExecutionService rs = new ReportExecutionService()
{
Credentials = new NetworkCredential(AppSettings.SSRS_Server_UserName, AppSettings.SSRS_Server_Password),
Url = string.Format("http://{0}/{1}/{2}", AppSettings.SSRS_Server_Name, AppSettings.SSRS_Server_Path,AppSettings.SSRS_Service_ExecutionURL),
ExecutionHeaderValue = new ExecutionHeader(),
Timeout = AppSettings.SSRS_WebTimeOut, //12 hr in Milliseconds //Timeout.Infinite,
};
Z
我们发现我们有防火墙规则,它会在 1 小时后丢弃 http 连接。这太可怕了,因为我们没有得到 ssrs 的回复,客户端没有任何响应。