日志文件与IIS不匹配,ASP.NET Web服务自定义日志记录

时间:2012-03-19 01:05:23

标签: asp.net vb.net web-services logging

我有一个问题。

当有人调用我的web服务时,会将其记录到IIS日志文件中,并且我还会将请求(在处理完之后)记录到自定义日志文件中以进行统计。

我使用以下函数登录文件:

Public Sub Log(ByVal Message As String, ByVal Level As LogEntryLevel, ByVal Additional As Boolean)
   Dim base As String = "C:\SERVER\log\"
   Dim fileName As String = Date.Now.ToString("dd-MM-yyyy") & ".log"
   Dim newString As String = ""
   If Not Additional Then
      If System.IO.File.Exists(base + fileName) Then newString &= vbNewLine
      newString &= Date.Now.ToString("[dd/MM/yyyy HH:mm:ss.fff ") & Level.ToString & "] " & Message
  Else
      newString &= Message
  End If
   My.Computer.FileSystem.WriteAllText(base + fileName, newString, True)
End Sub

我使用以下函数获取客户端IP地址:

Public Function getIP() As String
   Dim ip As String
   ip = Context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
   If ip = String.Empty Then
      ip = Context.Request.ServerVariables("REMOTE_ADDR")
   End If
   Return ip
End Function

昨天下午4点,这个记录了:

[18-03-2012 16:08:20.282 INFO] Client 192.168.1.1 invoked CheckForUpdate with []
[18-03-2012 16:08:20.485 SEVERE] FATAL EXCEPTION WHILE PROCESSING REQUEST:
IP            : 192.168.1.1
Source        : mscorlib
Method        : Parse
Type          : System.ArgumentNullException
Error Message : Waarde kan niet null zijn.
Parameternaam: input
Stack Trace   :    bij System.Version.Parse(String input)
   bij System.Version..ctor(String version)
   bij DataLayer.Service.CheckForUpdate(String ver) in File1:regel 79
-------------------------END ERROR REPORT-------------------------
[18-03-2012 16:08:20.516 INFO] Client 192.168.1.1 invoked CheckForUpdate with []
[18-03-2012 16:11:01.165 INFO] Client 192.168.1.1 invoked CheckForUpdate with []
[18-03-2012 16:11:01.165 SEVERE] FATAL EXCEPTION WHILE PROCESSING REQUEST:
IP            : 192.168.1.1
Source        : mscorlib
Method        : Parse
Type          : System.ArgumentNullException
Error Message : Waarde kan niet null zijn.
Parameternaam: input
Stack Trace   :    bij System.Version.Parse(String input)
   bij System.Version..ctor(String version)
   bij DataLayer.Service.CheckForUpdate(String ver) in File1:regel 79
-------------------------END ERROR REPORT-------------------------
[18-03-2012 16:11:01.165 INFO] Client 192.168.1.1 invoked CheckForUpdate with []

然而,IIS日志在那段时间内完全是空的:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2012-03-18 15:33:33
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-        Agent) sc-status sc-substatus sc-win32-status time-taken
2012-03-18 15:33:33 192.168.1.250 POST /Service.asmx - 80 - x.252.x.210 - 200 0 0 2761
2012-03-18 15:34:05 192.168.1.250 POST /Service.asmx - 80 - x.180.x.226 - 200 0 0 358
2012-03-18 15:39:29 192.168.1.250 POST /Service.asmx - 80 - x.166.x.235 - 200 0 0 390
2012-03-18 15:39:57 192.168.1.250 POST /Service.asmx - 80 - x.18.x.149 - 200 0 0 405
2012-03-18 15:44:20 192.168.1.250 POST /Service.asmx - 80 - x.4.x.113 - 200 0 0 343
2012-03-18 15:44:45 192.168.1.250 GET /Rejected-By-UrlScan ~/ 80 - x.192.x.18 - 404 0 64 218
2012-03-18 15:49:34 192.168.1.250 POST /Service.asmx - 80 - x.219.x.45 - 200 0 0 374
2012-03-18 15:52:52 192.168.1.250 POST /Service.asmx - 80 - x.59.x.202 - 200 0 0 312
2012-03-18 16:04:22 192.168.1.250 POST /Service.asmx - 80 - x.59.x.202 - 200 0 0 312
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2012-03-18 16:29:02
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-        Agent) sc-status sc-substatus sc-win32-status time-taken
2012-03-18 16:29:02 192.168.1.250 POST /Service.asmx - 80 - x.170.x.194 - 200 0 0 1310
2012-03-18 16:37:54 192.168.1.250 POST /Service.asmx - 80 - x.222.x.11 - 200 0 0 343
2012-03-18 16:39:09 192.168.1.250 POST /Service.asmx - 80 - x.243.x.193 - 200 0 0 327
2012-03-18 16:53:31 192.168.1.250 POST /Service.asmx - 80 - x.131.x.104 - 200 0 0 249

如何将IIS日志清空,但我的应用程序是否从本地网络记录了一些内容?当时,我的局域网没有发送该请求。没有人在家,我们没有无线网络。我是否有未经授权的入侵?

如果你们为我回答我的问题,那真是太棒了!

问候。

1 个答案:

答案 0 :(得分:0)

根据日志文件,看起来IIS可能已经被重置(可能是系统重启,有人做iisreset,应用程序池定期重新启动等)。

最可能的解释是,您的DataLayer中的代码在IIS启动时执行,调用CheckForUpdate方法,这就是IIS日志中没有任何内容的原因。