Telerik Report 在远程运行时超时,但在本地运行时不会超时
希望我能正确解释这一点..
Silverlight 应用程序 Telerik 报告(在单独的课程中) 托管 Silverlight 的 Web 应用程序 - 通过指向 Telerik.Report.Server.dll 的 ReportService.svc 提供对报告的访问。
在我的机器上开发,一切运行良好。有一份报告称,某些数据量超时,因此通过 Google 等...我设法通过 httpBinding 设置、IIS 设置等获得正确的设置并解决了问题。该报告现在运行良好。
当我将应用程序部署到服务器,然后通过浏览器访问 Web 应用程序时,除了长报告之外,一切都运行良好。该报告在数据较少时工作正常,但在数据较多时会超时并且服务终止。
但是,当我直接在服务器上运行相同的报告(使用服务器上的浏览器)时,一切正常。从另一台机器上点击它,一切都很好,除了包含大量数据的报告。
因此,这两种设置的唯一区别在于它可以在服务器上的浏览器中运行,但不能在我的机器上访问同一台服务器。
对可能出现什么问题有任何猜测吗?这非常非常奇怪。是不是因为Silverlight应用程序实际上在本地机器上运行并且超时了?
我们所说的生成大型报告的时间可能是 75 秒。不是几分钟什么的。
关于我可以检查什么或要提供更多信息有什么建议吗?我可以发送所有设置,但因为我认为它们不相关,因为唯一的变量是我们正在使用的机器。
奇怪...
更新:
所以...使用 Fiddler,我查看了来自 IE 和 Firefox 的调用。它们是相同的。唯一的区别是 Firefox/Telerik 在大约 30 秒后关闭连接。结果仍然返回,但 Firefox 不再监听。但如果我看一下 IE/Firefox 的响应,它们是相同的。要么 IE 保持连接打开,要么 Firefox 过早关闭连接。这不是防火墙问题,因为当所有内容都在同一台计算机上时就会发生这种情况。
Hope I can explain this correctly..
Silverlight Application
Telerik Reports (in a separate Class)
Web appliation hosting the Silverlight -- provides access to the reports via a ReportService.svc that points to the Telerik.Report.Server.dll.
Developed on my machine and all runs fine. There was one report that with certain amounts of data was timing out so via Google, etc... I managed to get the settings correct via httpBinding settings, IIS settings, and more and solved the problem. The report runs fine now.
When I deployed the application to the server and then hit the web application via my browser, all works just fine except again for the long report. The report works fine with less data, just times out and the service dies with larger data.
But when I run the same report on the server directly (using a browser on the server) everything works perfectly. Hit it from a different machine and everything is fine except the report with a lot of data.
So the ONLY difference in the two setups is that it works in a browser on the server, but not on my machine hitting that same server.
Any guesses on what could be the problem? It's very very odd. Is it because the Silverlight application is actually running on the local machine and timing out?
The times we're talking about are maybe 75 seconds to get a big report generated. Not several minutes or anything.
Any suggestions on what I could check or more information to provide? I could send all the settings, but since I figure they aren't relevant since the only variable is what machine we're using.
Odd...
UPDATE:
So... using Fiddler, I've looked at the calls from IE and Firefox. They are identical. The only difference is Firefox/Telerik closes the connection after about 30 seconds. The result still comes back, but Firefox is no longer listening. But if I look at the response from IE/Firefox they are the same. Either IE is keeping the connection open or Firefox is closing it prematurely. It's not a firewall issue as it happens when everything is on the same machine.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我最近必须解决一个几乎与您的描述完全匹配的问题:生成报告的 WCF 服务用于超时生成较大的报告。并且更改各种 WCF 绑定超时值没有任何区别。
后来我才发现超时实际上发生在网络流量管理器上(在本例中为 ZXTM,但这并不重要)。用于访问服务的主机名实际上是向流量管理器注册的,而不是直接向服务器注册的,因此所有流量都通过 ZXTM 路由。而那个碰巧定义了全局 40 秒超时。
一个非常有效的快速修复方法是使用服务器的计算机名称来寻址服务。
因此,我会检查到您服务器的流量是如何路由的以及是否可能存在类似情况。
I recently had to troubleshoot a problem which almost exactly matches your description: A WCF service which generates reports used to time out for larger reports. And changing the various WCF binding timeout values didn't make any difference.
Only later I found out the the timeout actually happened on a network traffic manager (ZXTM in this case, but it doesn't really matter). The host name that was used to access the service was actually registered with the traffic manager rather than the server directly, hence all traffic was routed through ZXTM. And that one happened to have a global 40 sec timeout defined.
A very effective quick-fix was then to use the server's machine name in order to address the service.
Hence, I'd check how traffic to your server is being routed and if it might be a similar situation.