我有一个用VB.NET编写的服务,该服务在本地系统帐户下运行。
我使用以下代码写入日志文件:
Dim logDirectory As String = Settings.baseDirectory
If Settings.loggingDirectory <> "\" Then
logDirectory &= Settings.loggingDirectory
End If
moFileStream = New FileStream(logDirectory & "Log.txt", FileMode.OpenOrCreate, FileAccess.Write)
moStreamWriter = New StreamWriter(moFileStream)
moStreamWriter.BaseStream.Seek(0, SeekOrigin.End)
moStreamWriter.Write(Now.ToLongDateString & vbTab & Now.ToLongTimeString & vbTab & sTekst & ControlChars.NewLine)
moStreamWriter.Flush()
其中baseDirectory和loggingDirectory都是从配置文件中读取的参数。这些是正确读取的,当我调试时,logDirectory保持正确的位置。
但是当服务写入日志文件时,它总是写入sysWOW64。我已在具有该文件夹的多个权限的服务器计算机上测试过此。甚至给了每个人完整的权限,但由于某种原因,它继续写入sysWOW64。
有没有人知道这可能是什么?
答案 0 :(得分:1)
首先,关闭StreamWriter
!
其次,尝试在moFileStream = New FileStream
行上设置一个断点,并检查logDirectory
在运行时等于什么。
另外,值得一提的是,您并不需要使用额外的FileStream
。您可以在创建新StreamWriter
时指定路径。请参阅:http://msdn.microsoft.com/en-us/library/f5f5x7kt(v=vs.110).aspx
答案 1 :(得分:0)
filestream
和streamwriter
是在OnStart
创建的。
由于某种原因,这使服务无法写入日志文件。