17
votes

I am trying to run a crystal report from my web application which was built using ASP.NET 4.0 and Visual Studio 2010. I have installed the following from the SAP site (http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp)

1) SAP Crystal Reports, version for Visual Studio 2010 - Standard EXE installation package which installs the software into the Visual Studio IDE.

2) SAP Crystal Reports runtime engine for .NET Framework 4 (64-bit)

I have a page called Reports.aspx in which I have a crystal report viewer control

 <CR:CrystalReportViewer ID="rptViewer" runat="server" AutoDataBind="true" />

In the Reports.aspx.cs file I have the following code:

protected override void OnPreRender(EventArgs e)
{
    ReportDocument report = new ReportDocument();
    var path = Server.MapPath("Reports/Sample.rpt");
    report.Load(path);
    report.SetDatabaseLogon("username", "password", "servername", "databasename");
    rptViewer.ReportSource = report;
}

On the report.Load(path) line I get the following error:

Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.

How can I fix this?

9

9 Answers

10
votes

make sure the report is in app_code folder initialize a new instance of it instead of initializing a reportdocument and loading the report in it.

Sample report = new Sample();

this worked for me

14
votes

I also got into the same problem my problem was report path was not valid, May be you have same problem , check Server.MapPath("Reports/Sample.rpt") returning valid path ?

6
votes

You will need to modify two properties in the .rpt files:

  1. Build Action is set to "Embedded Resource" by default. Change it to "Content".
  2. Copy to Output is set to "Do not copy" by default. Change it to "Copy always".

Rebuild, Build deployment package and Publish. Done!

5
votes

NOTE: Below, the term "WebSite" refers to actual web site nodes in IIS, NOT a virtual directory within a web site.

Problem Root Cause: There is no "aspnet_client" folder accessible by the application.
This can happen for several reasons:

  1. Since the SAP CR installer appears to install the aspnet_client folder in the ...\inetpub\wwwroot\ folder, if your Web Site physical path is NOT ...\inetpub\wwwroot, your application will not have access to the aspnet_client folder.
  2. If the aspnet_client folder was moved or deleted from to the top level of your web site's physical path, your IIS application will not have access to the folder.

Problem Solution (For Windows Server 2008 R2)

  1. Go to the IIS manager on your server
  2. Expand the tree view node for the WebSite running your application
  3. Look at the level immediately under the web site node and ensure you see a "aspnet_client" folder.
  4. If you do see the folder, then perhaps this root cause is not the cause of your problem.
  5. If you do NOT see the folder, search the server's hard drive for it and COPY it to the Web Site's Physical path.
  6. Right mouse button click on the Web Site node and click Refresh from the popup Menu
  7. You should now see the aspnet_client folder at the level directly under your web site node and the reports in the application should work.
3
votes

I ran into this when I converted a web site to a web application. The report would run fine on my dev machine, but not on the server. Then I realized the rpt file was missing on the server!

By default the report files were considered embedded resources and were not copied when the web application was published. I just changed them individually, republished the site, and all was well again.

2
votes

I have also had a report load failure if I have mistakenly left the report file open in crystal reports designer.

2
votes

This error is a real treat, and seems to have many possible antecedents. Fortunately I only wasted a day on my particular variation:

ReportDocument.Load() also makes a local temp copy. (This may only be in the case of a load from a network drive location, I didn't test this in the case of a local load.)

If the user context under which the load occurs does not have authority to create the temp file locally, Load will fail with the same very unhelpful error.


Also, I ended up diagnosing this with Process Monitor. It may be helpful for you as well.

0
votes

Please make sure your report rpt files are in their original folder. I got the same error first, after I "published" my MVC web site to IIS. I didn't realize that "Publish" didn't put rpt files in the package.

0
votes
  1. Re-install the "Crystal report engine" to the server

  2. Build Action set to "Content".

It perfectly worked for me..!