Load Report Failed On Server - Crystal Reports

10,792

This message usually shows that the report is not available using the provided path. If runtime is not installed you will receive different message.In your case everything is installed correctly but the report is not available in reportPath + rpName. You can debug and check were reportPath + rpName is pointing and if the report is really there. Try to use Path.Combine( reportPath , rpName) - it will add \ if necessary. Also check if IIS has permission to access the reports in reportPath folder.

Share:
10,792
Patrick Developer
Author by

Patrick Developer

I am a software developer with a degree in computer games programming. I now find myself developing applications using ASP.Net (C#), SQL Server and Crystal Reports. I also occasionally get to play around with HLSL DirectX programs in my free time, and enjoy wasting hours on XNA projects that go nowhere.

Updated on June 25, 2022

Comments

  • Patrick Developer
    Patrick Developer almost 2 years

    I have a crystal report viewer page that displays a report perfectly well on my desktop development computer. The code I have used for this viewer page is:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using LoyalitySystem;
    using System.Configuration;
    using HQ.DatabaseGateway;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;
    using System.IO;
    
    public partial class WebPages_DynamicReports_CrystalReportViewerPage : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string reportPath = Server.MapPath((string)Utils.GetSessionNavigator(this).GetDataFromCurrentPage(PageParams.Reports.Report));
            ReportDocument rep = new ReportDocument();
    
            try
            {
                if (!File.Exists(reportPath))
                {
                    Response.Write("The specified report does not exist \n");
                }
    
                rep.Load(reportPath);
                LoadReport(rep);
                this.CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                this.CrystalReportViewer1.HasToggleGroupTreeButton = false;
                this.CrystalReportViewer1.ReportSource = rep;
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
    
        private bool LoadReport(ReportDocument doc)
        {
            TableLogOnInfo crTableLogonInfo;
            Sections crSections;
            Database crDatabase;
            Tables crTables;
            ReportDocument crSubreportDocument;
            ReportObjects crReportObjects;
            SubreportObject crSubreportObject;
    
            try
            {
                ConnectionInfo con = new ConnectionInfo();
                con.ServerName = ConfigurationManager.AppSettings["dbsource"];
                con.DatabaseName = Utils.GetSessionNavigator(this).UserData.DatabaseName;
                con.UserID = ConfigurationManager.AppSettings["uid"];
                con.Password = ConfigurationManager.AppSettings["pwd"];
                crDatabase = doc.Database;
                crTables = crDatabase.Tables;
    
                //loop through all the tables and pass in the connection info
                foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
                {
                    crTableLogonInfo = crTable.LogOnInfo;
                    crTableLogonInfo.ConnectionInfo = con;
                    crTable.ApplyLogOnInfo(crTableLogonInfo);
                }
    
                // set the crSections object to the current report's sections
                crSections = doc.ReportDefinition.Sections;
    
                // loop through all the sections to find all the report objects
                foreach (Section crSection in crSections)
                {
                    crReportObjects = crSection.ReportObjects;
                    // loop through all the report objects to find all the subreports
                    foreach (ReportObject crReportObject in crReportObjects)
                    {
                        if (crReportObject.Kind == ReportObjectKind.SubreportObject)
                        {
                            crSubreportObject = (SubreportObject)crReportObject;
    
                            // open the subreport object
                            crSubreportDocument = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName);
    
                            // set the database and tables objects to work with the subreport
                            crDatabase = crSubreportDocument.Database;
                            crTables = crDatabase.Tables;
    
                            // loop through all the tables in the subreport and 
                            // set up the connection info and apply it to the tables
                            foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
                            {
                                crTableLogonInfo = crTable.LogOnInfo;
                                crTableLogonInfo.ConnectionInfo = con;
                                crTable.ApplyLogOnInfo(crTableLogonInfo);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Response.Write(e.Message);
                return false;
            }
    
            return true;
        }
    }
    

    As previously stated, this works fine when locally hosting my application, but on the production server I am getting Load Report Failed on every report that I run, and from my check to see if the file exists, I can see that the requested file is being found.

    My .aspx markup is:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CrystalReportViewerPage.aspx.cs"
        Inherits="WebPages_DynamicReports_CrystalReportViewerPage" %>
    
    <%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
        Namespace="CrystalDecisions.Web" TagPrefix="cr" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>CrystalReportViewer</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <cr:CrystalReportViewer ID="CrystalReportViewer1" runat="server" HasCrystalLogo="False" />
        </form>
    </body>
    </html>
    

    My web.config file contains:

        <sectionGroup name="businessObjects">
            <sectionGroup name="crystalReports">
                <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null"/>
            </sectionGroup>
        </sectionGroup>
    
            <assemblies>
                <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
                <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
                <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
                <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
                <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
            </assemblies>
            <buildProviders>
                <add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
            </buildProviders>
    

    And I have installed both CRforVS_redist_install_64bit_13_0_2 and CRforVS_redist_install_32bit_13_0_2 redistributables on my Windows 2008 R2 Datacenter server at different times and both have failed to resolve the issue. The application connects to an Amazon RDS SQL Server Instance, being on an Amazon EC2 instance itself.

    I've searched over the internet for some time to find the solution for this issue but apparently the Load Report Failed message is quite broad in its meaning, so I hope that I can solve this problem with help towards this particular instance of the issue.

    I have been stuck with this issue for over a week now so I would be grateful if any help can be offered.