IIS日志中记录了每个请求的信息,包括正常的响应请求和有异常的请求。这里所说的【异常】与.netframework中的异常没有关系。对于一个ASP.NET程序来说,如果抛出一个未捕获异常,会记录到IIS日志中(500),但我所说的异常不仅限于此。
	 
	  一、本文所说的异常可分为四个部分:
	 
	  1.(ASP.NET)程序抛出的未捕获异常,导致服务器产生500的响应输出。
	 
	  2.404之类的请求资源不存在错误。
	 
	  3.大于500的服务器错误,例如:502,503
	 
	  4.系统错误或网络传输错误。
	 
	  前三类异常可以用下面的查询获得:
	 
	  selectscStatus,count(*)AScount,sum(timetaken*1.0)/1000.0ASsum_timetaken_second
	 
	  fromMyMVC_WebLogwith(nolock)
	 
	  groupbyscStatus
	 
	  orderby3desc
	        
	 
	  二、IIS日志中有一列:sc-win32-status,它记录了在处理请求过程中,发生的系统级别错误,例如网络传输错误。
	 
	  正常情况下,0表示正常,出现非零值意味着出现了错误。我们可以这样统计这类错误:
	 
	  declare@recCountbigint;
	 
	  select@recCount=count(*)fromMyMVC_WebLogwith(nolock)
	 
	  selectscWin32Status,count(*)AScount,(count(*)*100.0/@recCount)AS[percent]
	 
	  fromMyMVC_WebLogwith(nolock)
	 
	  wherescWin32Status>0
	 
	  groupbyscWin32Status
	 
	  orderby2desc
	        
	 
	  1、下表列出了比较常见的与网络相关的错误及解释:
	 
	 
	  2、所有状态码都可以通过下面的命令来获取对应的解释:
	 
	  D:/Temp>nethelpmsg64
	 
	  指定的网络名不再可用。
	 
	  3、关于scwin32status与scStatus,我还想补充说明一下:它们没有关联。
	 
	 比如请求这个地址:http://www.abc.com/test.aspx,有可能scStatus=200,但scwin32status=64,此时表示ASP.NET已成功处理请求,但是IIS在发送响应结果时,客户端的连接断开了。另一种情况是:scStatus=500,但scwin32status=0,此时表示,在处理请求过程中发生了未捕获异常,但异常结果成功发送给客户端。