嘿,所以写到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);
}
}
答案 0 :(得分:0)
这里的设计存在一些问题。首先,在并发操作的上下文中,可以同时从同一个源读取,但是当发生写入时,您需要停止所有其他读写操作,否则会遇到竞争条件。
你要改变的第一件事是摆脱大问题Exception
,因为这会阻止你看到完整的错误。问题可能是内存不足错误,因为在加载相同数据集5-10次时,您的RAM已经上限。除非你知道错误是什么,否则你无法正确解决它,猜测也不会有帮助。
如果堆栈溢出停止超时,我会在这里复制并粘贴我的答案!