DotCMIS вызывает прекращение ответа после того, как я вытащил из двух документов два документа.Странные проблемы с тайм-аутом с Alfresco
Я проверил журналы на сервере Alfresco и ничего не связано с неудачными вызовами.
Я отлаживал идентификатор таймаута.
// определить доступный путь CMIS, который уже доступен под параметрами alfresco [DotCMIS.SessionParameter.AtomPubUrl] = "https://localhost:8080/alfresco/service/cmis";
// alfresco portal admin имя пользователя параметры [DotCMIS.SessionParameter.User] = "admin";
// alfresco portal admin пароль параметры [DotCMIS.SessionParameter.Password] = "w4rth0g!";
// определить сессионную фабрику SessionFactory factory = SessionFactory.NewInstance();
// с помощью сеанса завод получить хранилище по умолчанию, на этом хранилище мы будем выполнять действия & создать сеанс на этом хранилище ISession сессии = factory.GetRepositories (параметры) [0] .CreateSession();
Публичный ContentStream GetContentByDocumentId (строка docId) { ISession session; IObjectId id; Документ IDocument; 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;
}
Здесь я закрываю поток контенетов. Позже в приведенном ниже методе я пытаюсь Переберите, что
государственной статической силы CreateMergedPdf (строка targetPdfLocation, IEnumerable docStreams) { попробовать { используя (FileStream поток = новый FileStream (targetPdfLocation, FileMode.Create)) { var pdfDoc = новый документ (PageSize.A4); PdfCopy pdf = новый PdfCopy (pdfDoc, поток); pdfDoc.Open();
foreach (var doc in docStreams)
{
pdf.AddDocument(new PdfReader(doc));
}
pdfDoc.Close();
}
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message);
}
}
Я переместил закрывающее соединение к методу, где я потребляю здесь.
// Объединить документы в порядке очередиНо поле. var docStreams = new 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;
Здесь я получу доступ к закрытому потоку. Есть ли способ открыть его снова?
В третий раз, когда вызываемое имя creationession() вызывает тайм-аут.
Просто откройте одну сессию и использовать его. Открытие сеанса для каждого документа не требуется. –