【发布时间】:2012-11-05 16:48:38
【问题描述】:
我希望我可以在这里更具体,但不幸的是,这可能很难。我基本上希望这是一些“众所周知的”超时或设置问题。
我们有一个网站在工厂的屏幕上运行(JS/html - ASP.net 项目)网站概览。这个屏幕没有键盘,所以它应该永远刷新页面——也许几年(尽管 1 周可能没问题)。 (工厂工人用它来查看进货等)
这一切都完美无缺;该站点不断自我更新并获取新的正确数据。 然后,有时,早上这个“概览”屏幕没有数据,工作人员必须使用简单的刷新按钮或 F5 手动刷新站点 - 这可以解决所有问题。
我自己尝试了一些尝试重现错误的方法,包括:
- 切断互联网连接和许多其他使其超时的方法(断点、停止服务等)。
- 设置setInterval的刷新时间为100ms,让站点运行3-5分钟。 (正常计时器为 1 分钟)
- 根据我所做的互联网搜索,setInterval 应该永远运行。
- 检查了“JavaScript 频率”没有在省电设置中关闭。
无论如何;一旦我再次插入互联网电缆或其他任何东西,该网站就会恢复正确的功能而无需刷新 - 我无法重现错误。
该网站依赖于后端 WCF 服务和项目集成,但由于工作人员正在通过简单的刷新来解决此问题,我假设这没有崩溃。
编辑:我尝试在其中重现错误的浏览器是 IE/win7。我明天会问工厂,但我猜是IE/win?也。
setInterval 实际上是无限的还是这里有其他问题?
非常感谢所有帮助。
更新: 我今天早上离开网站以调试模式运行后,在网站更新代码的 catch 子句中设置了一个断点。 有 2 分钟。超时错误(可能在夜间忙于清理服务器),然后在此行出现空引用错误:
var showHistory = (bool)Session.Contents["ShowHistory"];
我像工人一样刷新了它。 我现在认为这可能是会话超时,尽管我们一直在 ping 服务器。 当然,我的特定会话超时可能是由于断点导致它在第一次超时时永远挂起 - 行为仍然与工厂相同。 稍后我会确保向你们更新最终解决方案。
更新 2:测试正在进行中。
更新 3:工厂是 IE 9,他们的测试机器是 IE 7,我的机器是 IE 9。在周末运行后,在 IE7 上看到了错误,但在我的 IE9 上没有看到。 我们尝试在关键的 data_binding 代码期间关闭 ajax 缓存,但它什么也没做。 我测试了内存泄漏,如果我每分钟刷新 100 次,就能够产生不错的泄漏。我不认为这是问题所在,并且刷新清除了所使用的内存。
我们现在将尝试自动刷新。
【问题讨论】:
-
+1,因为我有一个类似的系统,很想知道这是否真的是一个问题。
-
什么浏览器/操作系统/硬件...老实说,这可能是一整套不同的东西。
-
如果您要刷新整个页面,这应该不是问题的内在原因。如果代码使用 ajax 加载新内容,那么内存泄漏可能导致脚本最终失败。
-
您可以尝试每隔一段时间使用
<meta http-equiv="refresh" content="21600">之类的方式使页面自动刷新(相当于F5)。这应该使页面每 6 小时刷新一次并重置间隔。 -
当您说“刷新本身”时,您的意思是页面已重新加载吗?还是有更新内容的ajax调用?如果您只是重新加载整个页面,
setInterval毫无意义。
标签: c# javascript asp.net wcf