Я написал .Net Web API, который берет его входы, анализирует их и затем сохраняет XML-файл в сетевом ресурсе, связанном с нашим сервером. Я также создал службу Windows, которая сканирует сетевой ресурс для новых файлов для обработки нашей бизнес-логики.IIS, блокирующий файл, созданный с помощью XMLWriter
Это работает почти в 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 по-прежнему держит замок?
Спасибо за ответ. Я добавил блоки использования в свой код, но это не будет работать в нашей производственной среде в течение нескольких дней, поэтому я не смогу подтвердить, что он сразу решает проблему. – aaroncatlin
Ну, очевидно, я проверил код перед его выходом в производство.Если бы вы прочитали мой пост, вы бы знали, что проблема возникает только в производстве и только очень редко, поэтому я не могу воспроизвести проблему в нашей среде Stage. Поэтому единственный способ узнать проблему - это контролировать ее в нашей производственной среде. – aaroncatlin
Это, похоже, устранило проблему, ну, по крайней мере, для сегодняшнего трафика. Я продолжу следить, но отметил это как ответ. Благодарю. – aaroncatlin