проблема записи XML в файл с .net mvc - время ожидания? - PullRequest
1 голос
/ 22 марта 2010

Привет, поэтому возникли проблемы с записью в XML-файл. Прекрасно работает для отдельных запросов через браузер, но когда я использую что-то вроде Чарльза для выполнения 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 голосов
/ 22 марта 2010

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

Первое, что вы должны изменить, это избавиться от большого улова Exception, потому что это не дает вам увидеть полную ошибку.Причиной проблемы может быть ошибка нехватки памяти, поскольку вы загружаете ОЗУ, загружая один и тот же набор данных 5-10 раз.Если вы не знаете, в чем заключается ошибка, вы не сможете исправить ее правильно, и угадать не поможет.

, и если переполнение стека прекратит отсчет времени для меня, я скопирую и вставлю свой ответ здесь!

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