2012-03-27 4 views
0

documentBuilder (openXML API의)를 사용하고 있으며 documentBuilder를 모르는 사람들에게 간단한 설명을 드리겠습니다. 함수가 있습니다. 'BuildDocument'는 소스 목록 (각 소스에는 wmldocument 포함)과 fileName의 문자열을 저장합니다.documentBuilder : 다른 프로세스에서 사용 중이기 때문에 프로세스가 파일에 액세스 할 수 없습니다.

public static void BuildDocument(List<Source> sources, string fileName) 

이 기능의 목적은 모든 소스를 포함하는 하나의 단어 DOCX을 구축하는 것입니다. 하나의 문서를 병합합니다. 그 기능의 끝에서 그것을 사용하여 문서를 저장 : 다른 프로세스에서 사용하고 있기 때문에 "프로세스가 파일을 액세스 할 수 없습니다

File.WriteAllBytes(...) 

을하지만 난 오류가 계속 서버에 내 프로젝트를 실행할 때 . " 몇 번 작동합니다. visualStudio에서는 오류없이 작동합니다. 무엇이 문제 일 수 있습니까?

+0

동일한 스트림을 사용하여 열고 쓰고 있습니까? (이 파일의 열기, 읽기 및 쓰기와 관련하여 더 많은 코드를 작성해야 할 수도 있습니다.) –

+0

이 문제는 아마도'BuildDocument' 메소드를 호출 한 곳에서 발생했을 것입니다. 코드의 해당 부분을 가져올 수 있습니까? – GETah

답변

0

좋아, 내 실수를 발견, 그건 내 코드와 DocumentBuilder에 아니었다. 내가 쓴 :

FileInfo f=new FileInfo.... 
    f.Create(); 

나는 그것을 닫지 않았다. 코드를 변경해야했습니다 : FileInfo f = 새 FileInfo .... FileStream fs = f.Create(); fs.Close(); 도와 주셔서 감사합니다. 나는 정말로 그것을 바르게 평가한다!

1

아마도 문서 파일이 이미 열려 있습니다.

+0

있습니다 : file.close(), 물론! 그리고 나는 buildDocument의 코드를 작성하지 않았다. 나는 마이크로 소프트에서 뭔가를 생각한다 –

0

저장 파일을 저장 한 후 이 제대로 닫혔는지인지 확인하십시오. 그렇지 않은 경우 다음 번에 파일을 열어 텍스트를 추가하려고하면 오류가 발생할 수 있습니다. File.Close()

+0

거기 : file.close(), 물론! 그리고 나는 buildDocument의 코드를 작성하지 않았다. 나는 마이크로 소프트에서 뭔가를 생각한다 –

+0

권한 관련 문제가 있는지 확인하십시오. –

관련 문제