ошибка: этот файл используется другим пользователем - PullRequest
0 голосов
/ 25 марта 2011

1001 * Xml *

<?xml version="1.0" encoding="utf-8"?>
<Questions>
   <Question>
   <Id>1</Id>
   <Text>aaaa</Text>
</Question>
   <Question>
    <Id>2</Id>
    <Text>bbb</Text>
   </Question>
</Questions>

код

var doc = XDocument.Load(Server.MapPath(".") + "\\Questions.xml");
var elements = from element in doc.Descendants("Question")
               select new
               {
                   Id = element.Element("Id").Value,
                   Text = element.Element("Text").Value,
                   Reserver = element.Element("Reserver") != null
               };

Когда в проекте с тем же временем я открываю Mozilla и IE8, эта ошибка приводит к тому, что мои xml-файлы используются другим пользователем, но, конечно, иногда выдает эту ошибку, а иногда нет

EDIT

Если два пользователя запрашивают одно и то же время, отобразите страницу, которая использует XML. В этом случае оба одновременно хотят открыть XMl, который выдает ошибку, использование этого файла другим пользователем

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Если вы хотите поделиться им между пользователями, вы можете загрузить его в режиме совместного использования:

using (FileStream fs = File.Open(Server.MapPath(".") + "\\Questions.xml", FileMode.Open, FileAccess.Read, FileShare.Read)) {
  var doc = XDocument.Load(fs);
  // ... rest of your code...
}

(Примечание: непроверенный код.)

Используя FileAccess и FileShare, вы можете регулировать, какВы хотите, чтобы общий доступ имел место.Например, в этом примере файл может быть открыт только для совместного чтения, запись невозможна.Если вы хотите разрешить запись, вам нужно указать FileShare.ReadWrite.Но тогда файл может измениться, когда вы его читаете.

Если это в ASP.Net (я полагаю, поскольку у вас несколько пользователей), вы можете рассмотреть возможность кэширования файла в памяти при первом чтении.

0 голосов
/ 25 марта 2011

Я предполагаю, что то, что вы ищете, это способ узнать, не был ли файл уже использован другим пользователем, и поэтому заблокирован, и вы получите ошибку. Вот вопрос, который показывает, как проверить, открыт ли файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...