Я написал .Net Web API, который принимает входные данные, анализирует их, а затем сохраняет файл XML в сетевой папке, связанной с нашим сервером. Я также создал службу Windows, которая сканирует сетевой ресурс на наличие новых файлов для обработки нашей бизнес-логики.
Это работает почти в 100% случаев, но очень редко (1 из 20 000 раз) 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 все еще держит блокировку?