2011-03-25 78 views
0

的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文件的其他用户的一个项目,但当然,有时会出现此错误,有时没有错误

编辑

如果两个用户请求SA我时间给显示一个使用XML的页面。在这种情况下,我同时希望打开一个XMl,使其他用户可以使用该文件。

+3

问题是什么? – Alex 2011-03-25 15:22:43

+0

错误:此文件由其他用户使用 – ashkufaraz 2011-03-25 16:02:49

+0

我可以在问题的标题中看到* this *。你能解释你想做什么吗?你在谈论什么*项目*(来自你的问题)? – Alex 2011-03-25 16:26:22

回答

0

如果你想在用户之间共享,那么你可以加载它在共享模式:

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.ReadWrite。但是,随着您阅读文件,文件可能会改变。

如果这是在ASP.Net下(我假设你有多个用户),你可能要考虑在第一次读取时在内存中缓存文件。