Der Kristallbericht erzeugt Berichte parallel auf IIS, aber system.runtime.interopervicesC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Der Kristallbericht erzeugt Berichte parallel auf IIS, aber system.runtime.interopervices

Post by Anonymous »

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.

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); //

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post