首页 > 网站 > IIS > 正文

IIS日志中出现的异常记录

2024-08-29 03:10:03
字体:
来源:转载
供稿:网友
 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,此时表示,在处理请求过程中发生了未捕获异常,但异常结果成功发送给客户端。
 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表