常见的情况是网站访问量大了iis溢出,这往往容易让人造成错觉,iis 一溢出就以为是网站访问量大了所致,结果按这个方向去找原因,花费大量时间却无果而终,更为严重的是 iis 一溢出弹出一个等待选择“确定”还是“取消”窗口,网站使用的应用池随之停止工作,所有动态网页都打不开了,严重影响网站的用户体验和在搜索引擎中的排名,可能因此排名一泻千里。
其实,除网站访问量提升导致 iis溢出外,网站程序代码错误会更频繁的引发 iis溢出,并且常常是要选择“确定”还是“取消”的这种情况,所以影响十分大,即使网站有专门的管理员,也不可能一天24小时守着单击“确定”,所以找到 iis溢出原因(代码错误)十分必要。
一、网站程序代码错误引发的iis溢出系统日志的提示
这个可以在事件查看器中找到,一般有两处,一处是应用程序日志,另一处是系统日志。
1、应用程序日志iis溢出提示
事件类型: 错误
事件来源: .NET Runtime
事件种类: 无
事件 ID: 1024
日期: 2014-12-25
时间: 11:38:42
用户: N/A
计算机: WL93000683563
描述:
.NET Runtime version : 4.0.30319.1022 - Application ErrorApplication has generated an exception that could not be handled.Process ID=0x564 (1380), Thread ID=0x7bc (1980).
Click OK to terminate the application.
Click CANCEL to debug the application.
事件类型: 错误
事件来源: .NET Runtime
事件种类: 无
事件 ID: 1027
日期: 2014-12-25
时间: 11:38:41
用户: N/A
计算机: WL93000683563
描述:
Application: w3wp.exe Framework Version: v4.0.30319
Description: The process was terminated due to stack overflow.
2、系统日志iis溢出提示
事件类型: 警告
事件来源: W3SVC
事件种类: 无
事件 ID: 1011
日期: 2014-12-26
时间: 11:15:57
用户: N/A
计算机: WL93000683563
描述: 为应用程序池 'xx' 提供服务的进程在与 World Wide Web Publishing 服务通信时遇到致命错误。进程 ID 为 '2412'。数据字段包含错误号。
二、iis溢出错误分析
从应用程序日志看不出是什么问题,系统日志却提示了错误:“数据字段包含错误号。”。它提示我们,类的数据成员定义有误,例如:
Public string userName;
Public string UserName
{
Get{ return UserName;}
}
应该是反回 userName,而不是 UserName,只有一个微小的字母大小写的区别,稍不留意就会出错。改正这个错误后,就不会出现因“数据字段包含错误号”而引发iis溢出。