当前位置 主页 > iis相关 >

    IIS日志中出现的异常记录

    栏目:iis相关 时间:2018-08-24 14:37

     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,此时表示,在处理请求过程中发生了未捕获异常,但异常结果成功发送给客户端。