我编写了一个 .Net Web API,它接受输入,解析它们,然后将 XML 文件存储在链接到我们服务器的网络共享上。我还构建了一个 Windows 服务,它扫描网络共享以查找新文件以处理我们的业务逻辑。
这几乎 100% 的时间都有效,但非常偶尔(20,000 次中有 1 次)IIS6 会锁定它创建的文件,并且在重新启动 IIS 之前不会清除。锁定的文件始终为 0 字节。
目前我有一个文件已被锁定近 20 小时!这是创建文件的代码:
Try
'-- Make sure the file doesn't already exist
TempFileName = strFullFileName
i = 1
While IO.File.Exists(TempFileName)
TempFileName = strFullFileName.Replace(".xml", "_" & i & ".xml")
i += 1
End While
strFullFileName = TempFileName
'-- Deserialise the message into a file
drSerializer = New XmlSerializer(DetailsOfMsg.GetType)
FS = New FileStream(strFullFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None)
XW = XmlWriter.Create(FS)
drSerializer.Serialize(XW, DetailsOfMsg)
Finally
Try : XW.Flush() : Catch : End Try
Try : FS.Close() : Catch : End Try
Try : XW.Close() : Catch : End Try
FS = Nothing
XW = Nothing
End Try
为什么 IIS 仍然持有锁?