Der Kristallbericht erzeugt Berichte parallel auf IIS, aber system.runtime.interopervices
Posted: 14 Apr 2025, 09:42
Wenn Sie einen Nunit -Test ausführen, um zu überprüfen, ob mehrere PDF -Berichte korrekt generiert wurden, wird die folgende Ausnahme eingeschaltet. (Ausnahme von HResult: 0x8002000b (disp_e_badindex)) . Wenn Sie den Code in Visual Studio lokal iis ausführen, generiert er die Berichte ohne Probleme. Das gleiche gilt, wenn der Code auf iis auf dedizierter Windows Server -Machine ausgeführt wird. Das Programm ist ein ASP.NET MVC 5 Legacy -System, das auf .NET Framework 4.8
ausgeführt wird. Wenn weitere Informationen erforderlich sind, kann ich zusätzlich liefern. Lassen Sie mich in den Kommentaren wissen.
ausgeführt wird. Wenn weitere Informationen erforderlich sind, kann ich zusätzlich liefern. Lassen Sie mich in den Kommentaren wissen.
Code: Select all
public string GenerateReports(Query query)
{
// Collect data for reports.
const string report_1_folderPath = "path1";
Task generateReports_Task_1 = Task.Run((
Parallel.ForEach(reportData_1, (data)=>{
_reportGenerator.GenerateReport_1(data, report_1_folderPath);
});
));
const string report_2_folderPath = "path2";
Task generateReports_Task_2 = Task.Run((
Parallel.ForEach(reportData_2, (data)=>{
_reportGenerator.GenerateReport_2(data, report_2_folderPath);
});
));
// Processing something else . . .
Task.WaitAll(generateReports_Task_1, generateReports_Task_2);
// Archive folders and return to client . . .
}
< /code>
ReportGenerator ist so etwas wie folgt: < /p>
public class ReportGenerator
{
public string GenerateReport_1(ReportData data, string folderPathToSaveReport)
{
using (ReportDocument report = new ReportDocument())
{
report.Load(_reportTemplatePath);
// data.DataSourceObject is of Type IEnumerable
report.SetDataSource(data.DataSourceObject);
report.SetParameterValue("Parameter1", data.Parameters.p1); //