我已经仔细阅读了几个星期的论坛,现在尝试了不同的解决方案,但似乎没有任何帮助。这是我的问题:
我创建了一个ASP.NET Web应用程序,用于在Service Desk设置中显示仪表板样式的指标。客户端在服务台房间有大屏幕,显示我的网络应用程序的特定页面。
有些页面使用UpdatePanel,其他页面使用$ .ajax每15秒调用一次代码(我为ajax调用设置了各种[WebMethod])。
这些仪表板大约工作了一天,可能是2天,然后停止刷新,并且可以在控制台中找到上述错误消息。检查ajax方法的错误显示它们点击了ajax调用的'error:'部分。
以下是我试图无效的解决方案:
在EnableSessionState="False"
标题中添加了<%@ Page %>
。
在validateRequest="false"
标题中添加了<%@ Page %>
。
在enableEventValidation="false"
标题中添加了<%@ Page %>
。
在我的网络方法中添加了try-catch语句以捕获错误。
添加了Global.asax并覆盖了Application_Error。使其写入应用程序事件日志。示例如下。
Exception exc = Server.GetLastError().GetBaseException();
if (!EventLog.SourceExists("Dashboards"))
{
EventLog.CreateEventSource("Dashboards", "Dashboard");
}
EventLog log = new EventLog();
log.Source = "Dashboards";
log.WriteEntry(exc.ToString());
Server.ClearError();
永远不会调用此Global.asax异常(据我所知),我从未记录任何异常。
我无法想到与此相关的任何其他故障排除。
如果我不得不猜测,我会说这是导致问题的每15秒ajax / updatepanel调用。该应用程序在Server 2012上的IIS v8上运行。也许IIS认为它正在获得DDOS或类似的东西?另一种可能性是我在后面的代码(aspx.cs)中运行了各种线程来更新ajax调用然后从中获取的信息。也许线程会以某种方式被杀死?
我目前缺乏想法。任何帮助与故障排除将不胜感激。我也非常乐意上传更多代码作为示例。
感谢任何能够提供帮助的人。
答案 0 :(得分:0)
经过广泛的研究,我设法解决了这个问题。
这些网页自然是长期运行的(它们是在服务台环境中不断显示和更新的仪表板),并且它们具有各种长时间运行的线程,可在后台执行操作。
IIS具有回收应用程序池的功能,默认情况下,间隔设置为29小时,这恰好是内部服务器错误的间隔。
由于这是此服务器上运行的唯一应用程序,并且有少数计算机将访问此网站,因此我禁用了应用程序池回收。这立即解决了这个问题。
我将定期检查服务器,以确保此更改不会导致任何其他不利问题,但到目前为止一直很好。
希望这有助于其他任何有长期运行的Web应用程序出现此问题的人。