DotCMIS 호출은 5 개의 문서 중에서 2 개의 문서를 가져온 후에 응답을 중지합니다.Alfresco에서 이상한 시간 초과 문제가 발생했습니다.
Alfresco 서버에서 로그를 검사했는데 실패한 호출과 관련된 내용이 전혀 없습니다.
타임 아웃을 식별하기 위해 디버깅했습니다.
// alfresco에서 이미 사용 가능한 CMIS 사용 가능한 경로를 정의하십시오. 매개 변수 [DotCMIS.SessionParameter.AtomPubUrl] = "https://localhost:8080/alfresco/service/cmis";
// alfresco 포털 관리자 사용자 이름 [DotCMIS.SessionParameter.User] = "admin";
// alfresco 포털 관리자 암호 매개 변수 [DotCMIS.SessionParameter.Password] = "w4rth0g!";
// 세션 팩토리를 정의하십시오. SessionFactory factory = SessionFactory.NewInstance();
//이 저장소에 우리가 행동 &이 저장소에 ISession 세션 = factory.GetRepositories (매개 변수) 세션을 생성 수행하는 것, 세션 공장 기본 저장소를 얻을 사용 [0] .CreateSession();
공개 콘텐츠 스트림 GetContentByDocumentId (문자열 docId) { 세션 세션; IObjectId id; IDocument doc; IContentStream contentStream; ContentStream contentStreamModel = 새 ContentStream();
try
{
session = GetSession();
id = session.CreateObjectId(docId);
doc = session.GetObject(id) as IDocument;
// Content
contentStream = doc.GetContentStream();
contentStreamModel.FileName = contentStream.FileName;
contentStreamModel.Length = contentStream.Length;
contentStreamModel.MimeType = contentStream.MimeType;
contentStreamModel.Stream = contentStream.Stream;
contentStreamModel.Stream.Close();
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message);
}
finally
{
session = null;
id = null;
// session.Delete(id, true);
// session.Clear();
doc = null;
contentStream = null;
//contentStream.Stream.Close();
//contentStreamModel.Stream.Close();
}
return contentStreamModel;
}
여기에서는 contenet 스트림을 닫습니다. 나중에 내가 그
공공 정적 무효 CreateMergedPdf을 통해 루프를 시도하고 아래의 방법 (문자열 targetPdfLocation, IEnumerable을 docStreams) 는 { 사용 { 시도 (파일 스트림 스트림 = 새로운하여 FileStream (targetPdfLocation, FileMode.Create)) 에서 { var pdfDoc = 새 문서 (PageSize.A4); PdfCopy pdf = 새로운 PdfCopy (pdfDoc, stream); pdfDoc.Open();
foreach (var doc in docStreams)
{
pdf.AddDocument(new PdfReader(doc));
}
pdfDoc.Close();
}
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message);
}
}
여기서 폐색 연결을 여기에서 소비하는 방법으로 이동했습니다.
// 주문순으로 문서를 병합하지 마십시오. var docStreams = 새 List(); // var docStreams2 = new List();
**foreach (string docId in orderedDocIds)
{
// Retreive doc from Alfresco.
var doc = GetContentByDocumentId(docId);
docStreams.Add(doc.Stream);
doc.Stream.Close();
}**
// docStreams.CopyTo(docStreams2.ToArray());
// Created a merged pdf and drops in a temp folder.
FileHelper.CreateMergedPdf(mergedPdfFileLocation, docStreams2);
return mergedPdfFileLocation;
폐쇄 스트림에 액세스 할 수 없습니다. 다시 열 수있는 방법이 있습니까?
세 번째로 createsession()이 호출되면 timeout errror가 발생합니다.
하나의 세션을 열고 다시 사용하기 만하면됩니다. 각 문서에 대한 세션을 열 필요는 없습니다. –