Crystal Reports for Visual Studio 2010 Error

2019-01-14 07:28发布

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条回答
We Are One
2楼-- · 2019-01-14 07:41

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 ?

查看更多
仙女界的扛把子
3楼-- · 2019-01-14 07:46

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.

查看更多
放荡不羁爱自由
4楼-- · 2019-01-14 07:52

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.
查看更多
小情绪 Triste *
5楼-- · 2019-01-14 07:54

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.

查看更多
祖国的老花朵
6楼-- · 2019-01-14 07:59

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

查看更多
何必那么认真
7楼-- · 2019-01-14 07:59

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!

查看更多
登录 后发表回答