У меня есть файл журнала на сервере Production, который постоянно обновляется программой (очень часто говорят от 5 до 10 раз в секунду).Чтение файла, доступного только для чтения, блокирует файл
Этот файл журнала явно доступен только для чтения для сервера Dev, и вероятность того, что размер файла увеличится до ~ 4 МБ.
У меня есть программа в среде Dev. Это периодически считывает содержимое файла и ищет определенные строки/ключевые слова.
************************
If File.Exists(targetFile) Then
Using fs As FileStream = New FileStream(targetFile, FileMode.Open, FileAccess.Read)
Using sr As StreamReader = New StreamReader(fs)
Dim all As String = sr.ReadToEnd()
allLines = all.Split(Environment.NewLine)
End Using
End Using
End If
********************************
Моя проблема в том, что это похоже на чтение с сервера разработчиков, блокирующего файл [не уверен]. Таким образом, служба PRD не может получить доступ к файлу и бросать ошибки.
Исправьте, что четвертый параметр FileShare является ответом - но кажется, что .Read или .ReadWrite разрешают другим доступ к файлу. – rheitzman
@ rheitzman OP говорит, что производственный сервер не может записывать в файл журнала, пока поток открыт. Поэтому вам нужно открыть с помощью Write или ReadWrite (в зависимости от того, читает ли сервер из собственного файла журнала). –
Я думаю, что проблема заключалась в том, что программа-разработчик блокировала файл, который случайно вызывал ошибки сервера. Возможно, вы исправите, что обе программы должны использовать свойство FileShare(), но я предполагаю, что только изменение программы dev сделает трюк. – rheitzman