用.net mvc写文件xml到文件的问题 - 超时?

时间:2010-03-22 13:35:08

标签: asp.net-mvc linq linq-to-xml xml

嘿,所以写到xml文件有问题。 通过浏览器对单个请求工作正常,但是当我使用像Charles这样的东西同时执行5-10个重复请求时,其中几个会失败。 跟踪只显示500错误,内部没有内容,基本上我认为他们开始超时等待写访问或其他...

此方法在我的存储库类中,也尝试将存储库实例作为单例,但似乎没有任何区别..

非常感谢任何帮助。干杯

    public void Add(Request request) {
        try {
            XDocument requests;
            XmlReader xmlReader;
            using (xmlReader = XmlReader.Create(_requestsFilePath)) {
                requests = XDocument.Load(xmlReader);
                XElement xmlRequest = new XElement("request",
                            new XElement("code", request.code),
                            new XElement("date", request.date),
                            new XElement("email", new XCData(request.email)),
                            new XElement("name", new XCData(request.name)),
                            new XElement("recieveOffers", request.recieveOffers)
                        );
                requests.Root.Element("requests").Add(xmlRequest);
                xmlReader.Close();
            }
            requests.Save(_requestsFilePath);
        } catch (Exception ex) {
            HttpContext.Current.Trace.Warn("Error writing to file: "+ex);
        }
    }

1 个答案:

答案 0 :(得分:0)

这里的设计存在一些问题。首先,在并发操作的上下文中,可以同时从同一个源读取,但是当发生写入时,您需要停止所有其他读写操作,否则会遇到竞争条件。

你要改变的第一件事是摆脱大问题Exception,因为这会阻止你看到完整的错误。问题可能是内存不足错误,因为在加载相同数据集5-10次时,您的RAM已经上限。除非你知道错误是什么,否则你无法正确解决它,猜测也不会有帮助。

如果堆栈溢出停止超时,我会在这里复制并粘贴我的答案!