cancel
Showing results for 
Search instead for 
Did you mean: 

COMException (0x80041811) after deploying website

Former Member
0 Kudos

Hello,

i made a very simple page using Crystal Reports for out ASP.NET Application.

Locally on my development machine the Report loads fine, without a problem. Though trying the same page on a Windows Server 2008 R2, i get the following error:


Vorgang wird nicht unterstützt. Ein durch die JRC-Engine bearbeitetes Dokument kann nicht im C++ Stack geöffnet werden.

Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

Ausnahmedetails: System.Runtime.InteropServices.COMException: Vorgang wird nicht unterstützt. Ein durch die JRC-Engine bearbeitetes Dokument kann nicht im C++ Stack geöffnet werden.

Quellfehler:

Zeile 23:             FileStream test = File.Open(Server.MapPath(@"Reports\reportname.rpt"), FileMode.Open, FileAccess.Read);

Zeile 24:             test.Close();

Zeile 25:             this.CrystalReportSource1.ReportDocument.Load(Server.MapPath(@"Reports\reportname.rpt"));

Zeile 26:             SqlConnectionStringBuilder sb;

Zeile 27:             try

Quelldatei: d:\Couplink\Portal\ReportTest.aspx.cs    Zeile: 25

Stapelüberwachung:

[COMException (0x80041811): Vorgang wird nicht unterstützt. Ein durch die JRC-Engine bearbeitetes Dokument kann nicht im C++ Stack geöffnet werden.]

   CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0

   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +147

   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +431

[CrystalReportsException: Bericht konnte nicht geladen werden.]

   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +558

   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ProductLocaleID() +42

   CrystalDecisions.ReportSource.CachedObjectReportSource.GetReport(RequestContext context, Boolean bAddToCacheWhenCreated) +743

   CrystalDecisions.Web.CrystalReportSource.get_ReportDocument() +327

   CYM.ReportTest.Page_Load(Object sender, EventArgs e) in d:\Couplink\Portal\ReportTest.aspx.cs:25

   System.Web.UI.Control.LoadRecursive() +71

   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178

Versionsinformationen: Microsoft .NET Framework-Version:4.0.30319; ASP.NET-Version:4.0.30319.17929

The error translates to "A document processed by the JRC engine cannot be opened in the C++ stack.".

Information about the Server:

Windows Server 2008 R2

64bit

IIS 7.5

I did not pre-compile the application but deployed the source files and used the IIS built-in compiler. Which to my knowledge compiles as 64bit if i do not explicitly enable support for 32bit apps in the applicationpool.

I installed CRforVS_redist_install_32bit_13_0_9 as well as CRforVS_redist_install_64bit_13_0_9.

First "weirdness" i encountered is, that even after installing those files, the IIS couldn't find the necessary DLLs that were referenced in the web.config.

Here is the corresponding part of the web.config:


<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>

        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

        <add assembly="CrystalDecisions.ReportAppServer.XmlSerialize, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="SAPBusinessObjects.WPF.ViewerShared, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.VSDesigner, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Data.AdoDotNetInterop, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.ObjectFactory, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Windows.Forms, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="FlashControlV71, Version=1.0.3187.32366, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.Prompting, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.CommonObjectModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Enterprise.Viewing.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.CubeDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="ShockwaveFlashObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.CrystalReports.TemplateEngine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.CommonControls, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.ReportDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="SAPBusinessObjects.WPF.Viewer, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.DataSetConversion, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportAppServer.CommLayer, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CRVsPackageLib, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.CrystalReports.Design, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

I solved this by manually uploading the DLLs from my development machine to the bin directory of the website. Then i could at least compile the website.

Now when i open the Page "ReportTest.aspx" I get the beforementioned error.

I already copied the aspnet_client from the inetpub/wwwroot directory into the root directory of the website.

I tried with 32bit enabled and disabled in the Applicationpool.

I tried with an CR XI report, CR13 report and an "empty" CR 13 report, which was supposed to only show a "Test" text. Neither worked.

The Apppool has full access to c:/Windows/Temp and the directory in which i put the reports, since i gave everyone full access to those paths.

I also put in two lines that open and close the report for binary reading to test for file access.

I looked upon dozens of threads and tried whatever would apply to my situation without success.

I sincerely hope you can help me.

Best regards,

Marc Gehlen

Accepted Solutions (1)

Accepted Solutions (1)

former_member183750
Active Contributor
0 Kudos

See if this blog helps:

See if logs created in Process Monitor point you towards a resolution.

- Ludek

Senior Support Engineer AGS Product Support, Global Support Center Canada

Follow us on Twitter

Former Member
0 Kudos

Thank you very much

I did another take with the Process Monitor and found something i missed before.

When developing the webpage, i assigned a fixed path to the CrystalReportSource, which i thought would be ignored since the first thing my sourcecode would do would be to load another document.

But it still tried to load that Report with my local path and didn't even get to loading the specified report.

Now that i changed that local path it works.

former_member183750
Active Contributor
0 Kudos

Excellent - many thanks for letting us know that it works

Pointers like this are so valuable.

- Ludek

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Marc

I have the same problem after upgrading our server W2008 R2. If you don't mind, how you include your Crystal Report from you code. You've mentioned that you have changed the local path of the reports.

Heaps Thanks.

Danny

Former Member
0 Kudos

In my ASPX-Page:


<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" EnableDatabaseLogonPrompt="False" EnableParameterPrompt="False" ReportSourceID="CrystalReportSource1" ReuseParameterValuesOnRefresh="True" />

<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">

       <Report FileName="C:\Path-to-your-Report.rpt">

       </Report>

</CR:CrystalReportSource>

Inside my ASPX.CS Code:


this.CrystalReportSource1.Report.FileName = Server.MapPath(@"Reports\" + Request["Folder"].ToString() + @"\" + Request["Report"].ToString());

this.CrystalReportSource1.ReportDocument.Load(Server.MapPath(@"Reports\" + Request["Folder"].ToString() + @"\" + Request["Report"].ToString()));

//<snip>

SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(Tools.getConnectionString().Substring(20));

CrystalDecisions.CrystalReports.Engine.ReportDocument doc = this.CrystalReportSource1.ReportDocument;

doc.SetDatabaseLogon(sb.UserID, sb.Password, sb.DataSource, sb.InitialCatalog, true);

doc.DataSourceConnections[0].SetConnection(sb.DataSource, sb.InitialCatalog, sb.UserID, sb.Password);

doc.VerifyDatabase();

CrystalReportViewer1.DataBind();

If i remember correctly the first line in the c#-Code was the critical one.

Former Member
0 Kudos

Thanks Marc for the prompt reply.

It turned out that permission rights for the Application Pool user is not getting the access to the Physical Path of the virtual directory. After giving the correct privileges it works.