안녕하세요, xml 파일에 쓰는 데 문제가 있습니다. 브라우저를 통한 단일 요청에 대해서는 정상적으로 작동하지만, Charles와 같은 것을 사용하여 5-10 번의 반복 요청을 동시에 수행하면 여러 요청이 동시에 실패합니다. 추적 내용이 내부에 내용이없는 500 개의 오류를 보여주기 때문에 기본적으로 쓰기 액세스 또는 다른 작업을 기다리는 시간이 초과 된 것 같습니다. ....net을 사용하여 XML을 파일에 쓰는 데 문제가 있습니다. mvc - timeout?
이 방법은 저장소 클래스 내에 있으며 저장소 인스턴스를 싱글 톤이지만 아무런 차이가없는 것처럼 보입니다.
도움이 될만한 점이 많습니다. 환호
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);
}
}
잘 스택 오버플로 내 대답을 게시하게하지 않을 이유를 모르겠다. 내 게시물의 최종 결과는 예외를 제거하고 실제 오류를 얻거나이 코드를 더 잘 만들 수있는 1000 가지 방법이 필요하다는 것이었지만 실제 문제가 무엇인지 모른 채 모두 장님이었습니다. –
안녕하세요, 덕분에, iis7 실제로 처음으로, 그래서 이제 iis7 대신 casini를 사용하여 연결된 오류를 캡처하지 못했습니다 실현했습니다. 그래서 실제 오류입니다 - 프로세스가 다른 프로세스에서 사용 중이기 때문에 '... \ requests.xml'파일에 액세스 할 수 없습니다. 동일한 문제가있는 잠금 코드 (내부에서 코드 저장)를 사용하려고했습니다. 이러한 종류의 동시 파일 액세스에 유용한 코드 디자인 팁이 있습니까? 다른 답변 (뮤텍스 등)을 조사했지만이 문제를 해결할 수 없었습니다. – Mark
한 번에 하나의 스레드 만 실제 파일에 액세스하도록하는 메커니즘이 필요합니다. 내 제안은이 파일을 메모리에로드하는 것입니다. 하루 종일 많은 요청이나 몇 초 후에 메모리에서 동시 변경을 수행하여 데이터를 디스크에 다시 보관할 수 있습니다. 더 자주 디스크 쓰기를해야한다면, 이런 종류의 설정으로 쉽게 수정할 수 있습니다. 절대적으로 메모리에 보관할 수 없다면, 저장소에서이 메소드를 호출 할 때 "쓰기 대기열"을 작성하고 항목을 추가 한 다음 선택할 때마다 전체 대기열을 작성하십시오. –