1

我一直在 vb.net 中编写一个应用程序,每隔几个减号将 IIS W3C 日志文件的最后几行复制到将用于某些远程报告的文件中。

  • 当我在本地 PC 上测试时一切正常,但是当我在实时 IIS 服务器上尝试时,它告诉我文件已被另一个进程锁定,我认为 IIS 已将其锁定...
  • 它确实读取了一些站点日志文件(比服务器上的站点更多),但没有读取其他站点,告诉我已锁定/正在使用中。
  • 为什么我总是可以在记事本中打开文件,但不能在我的应用程序中打开它?

编码:

Dim linex = ""
Dim Line = ""

    '### IT ERROS OUT ON THE NEXT LINE ###
Using sr As New StreamReader("C:\inetpub\logs\LogFiles\W3SVC14\u_ex130702.log")

    Do Until sr.EndOfStream
        linex = sr.ReadLine()                
         line = line & linex & vbCrLf           
    Loop

End Using
4

1 回答 1

1

创建底层时需要指定正确的共享选项和打开模式FileStream。由于没有StreamReader传递所有必要参数的构造函数,因此您需要FileStream首先使用FileStream(String, FileMode, FileAccess, FileShare)StreamReader构造,然后使用SrteamReader(Stream)在其上创建。

我认为以下应该在 IIS 写入时打开 IIS 日志文件(如果没有 - 尝试其他标志组合)

Using stream As New  New FileStream( _
 "Test#@@#.dat", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
   Using sr As New StreamReader(stream)
于 2014-02-24T07:13:08.500 回答