#xml #vb.net #linq #xelement #network-drive
#xml #vb.net #linq #xelement #сетевой диск
Вопрос:
Я хочу отредактировать XML-файл. Я могу открывать, редактировать и сохранять (перезаписывать) файл на локальном диске.
Я могу открыть и отредактировать файл на сетевом диске. Я также могу сохранить его по новому пути, но я не могу перезаписать файл.
Dim localPath As String = "C:...file.xml" 'works
Dim networkPath As String = "Y:...file.xml" 'doesnt work
Dim networkPath2 As String = "\my.network.local...file.xml" 'doesnt work
Dim doc As XElement
doc = XElement.Load(networkPath)
doc.Save(networkPath)
Я получаю это исключение, когда пытаюсь сохранить: System.IO.IOException: «Запрос не поддерживается».
Спасибо за вашу помощь.
Комментарии:
1. Не могли бы вы обработать его локально и переместить / скопировать обратно в сеть?
2. Да, это то, что я сделаю, если проблема не будет решена. Но у меня уже есть довольно большой проект, в котором мне пришлось бы многое изменить.
3. У вас есть разрешение на запись в файл? Вы администратор? VS не запускается автоматически от имени администратора. Вы должны щелкнуть правой кнопкой мыши ярлык и выбрать Запуск от имени администратора. Если вы являетесь администратором, вам необходимо использовать знак доллара в имени пути, чтобы предоставить права администратора.
4. Я администратор и имею права на запись на диске. Например, я могу нормально перезаписать текстовый файл. Запуск от имени администратора и знак доллара не показали никакой разницы.
5. Ошибка возникает только при сохранении? Можете ли вы перейти к файлу на сетевом диске и открыть его с помощью блокнота, а затем сохранить его?
Ответ №1:
Была такая же проблема с
...writeAllLines(...)
Мое решение:
- создать резервную копию исходного файла (file.bak.xml )
- удалить исходный файл
- сохраните новый файл
- успех? да -> удалить файл bak; нет-> получить файл bak как исходный файл
If File.Exists(path) = False Then doc.Save(path) Else Dim temp As String = path amp; ".bak.xml" File.Move(path, temp) Try doc.Save(path) File.Delete(temp) Catch ex As Exception File.Move(temp, path) End Try End If