У нас возникли некоторые проблемы с производительностью в нашем приложении, где Crystal Reports (XI) размещается в WCF-сервисе. С помощью профилировщика производительности мы смогли выяснить, что вызов ReportDocument.Load занимает более 10 секунд. Если копать глубже, то наиболее проблемный момент - метод ReportClientDocumentClass.Open, который занимает целых 10 секунд.
Мы вызываем метод Load следующим образом:
dim doc As ReportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument
doc.Load("filename")
Файл отчета размещен на том же сервере, что и служба.
«Трассировка стека» для ReportDocument.Load выглядит следующим образом:
ReportDocument.Load
ReportClientDocumentWrapper.EnsureDocumentIsOpened
ReportClientDocumentWrapper.Open
ReportClientDocumentClass.Open
И, как я упоминал выше, вызов ReportClientDocumentClass.Open является "зависшим". Любые идеи, которые могут вызвать это?