Crystal Reports“加载报告失败”错误在服务器上运行报告

时间:2011-07-29 23:07:18

标签: asp.net crystal-reports

我在服务器上收到错误“加载报告失败”,它在localhost上运行时没有错误。我正在使用VS 2008和.Net 3.5。

这是我的代码:

ReportDocument reportDocument = new ReportDocument();
    String filePath = @"C:\abcSpaces\abc.com\xyz.com\wwwroot\Order Fulfilment.rpt";//full path
// I have tried OrderFullfilment.rpt and ~/OrderFullfilment.rpt and /OrderFullfilment.rpt
    try
    {
        reportDocument.Load(filePath);
        CrystalReportViewer1.ReportSource = reportDocument;
    }
    catch(Exception ex){
        Label1.Text = ex.Message;
}

Aspx Page part:

<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" Height="1291px"
        ReuseParameterValuesOnRefresh="True" Width="1125px" />

^我尝试过使用

<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
        <Report FileName="expenseRep_summary.rpt">
        </Report>
</CR:CrystalReportSource>

当然没有运气......

我的web.config部分用于引用程序集:

<compilation debug="true">
        <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="MySql.Data, Version=6.2.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
            <add assembly="MySql.Data.Entity, Version=6.2.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
            <add assembly="MySql.Web, Version=6.2.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
            <add assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.Shared, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.ReportSource, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/><add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/><add assembly="CrystalDecisions.Enterprise.Framework, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/><add assembly="CrystalDecisions.Enterprise.InfoStore, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
            <add assembly="CrystalDecisions.Data.AdoDotNetInterop, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.VSDesigner, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/></assemblies>
</compilation>

我已尝试在stackoverflow中发布所有这些解决方案:

CrystalReport Load report failed(不,我无法更改注册表或重新安装水晶报表,我的网站托管在外部服务器上)

load report failed(地狱是objReport?)

I got the problem in Crystal Report- Error Messsage:Load report failed(我没有反对报告类的对象:S)

Load report failed when implementing crystal report in asp.net 3.5(我试过这个'〜'技术+绝对路径,但没有工作)

Load report failed in Windows server 2003(我已为每个文件设置了读写执行权限)

https://stackoverflow.com/questions/3337185/crystal-report-giving-load-failed-error(像我这样的人,尚未找到解决方案:P)

所以请帮助我!或者我的客户会活着吃我......

6 个答案:

答案 0 :(得分:6)

我知道这是一个老帖子。但对于仍在寻找答案的人来说:

您需要在页面标记中注册水晶报告

<% @ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
    Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

将报告的属性'复制到输出目录'设置为'始终复制'

crystalreportsource中文件的路径为〜/ bin / YOURFOLDER / YOURFILE

<CR: CrystalReportSource ID ="CrystalReportSource1" runat ="server">
            <Report FileName="~/bin/oilmovement/rptOMDayEnd.rpt">
            </Report>
        </CR: CrystalReportSource>

现在报告应该有效

答案 1 :(得分:1)

我以前遇到过同样的问题,似乎你需要在服务器上安装CR运行时。只有DLL是不够的。希望它有所帮助。

答案 2 :(得分:1)

我知道这是一个老问题,但今天我遇到了类似的问题。 报告在本地工作,但在部署到服务器(IIS)时,我遇到了同样的错误。

尝试为IIS用户(创建报告的过程)添加%TEMP%的写入/读取权限。

报告在Temp中生成,并且从那里观看者获得在网站上显示的内容。

答案 3 :(得分:1)

  • 为您的应用程序或网站选择您的应用程序池
  • 点击回收(右侧面板)
  • 将常规时间间隔1740的值减少到20分钟或设置您想要的期望值
  • 这将释放iis的任何资源。
  • 重启iis。

希望这能解决您的问题

http://littleprograming.blogspot.com/2013/02/crystal-report-error-load-report-failed.html

答案 4 :(得分:1)

我也遇到了这个问题,在耗尽所有其他选项后,将应用程序池设置Load User Profile从False更改为True,从而解决了问题。

这是在已经部署到数十个IIS6,IIS7,IIS7.5服务器的应用程序上,我们以前从未遇到过这个问题。应用程序池运行时使用标识网络服务(它通常是),我首先尝试授予C:\ windows \ temp的权限,但这不起作用(尽管我没有检查它是否真的是临时目录)。

我怀疑另一种解决方案可能是将网络服务添加到IIS_IUSRS组,但我没有尝试过,如果它影响了服务器上的其他应用程序,我真的不想这样做。

答案 5 :(得分:0)

最常见的原因可能是,Crystal Report(* .rpt)文件实际上不存在于目标位置,这些位置可能在构建和发布应用程序时遗漏了

解决方案:
打开Visual Studio,选择所有CrystalReport.rpt文件,右键单击以设置“属性”。

构建操作:内容(也可以是嵌入式资源)
CopyToOutputDirectory:始终(如果较新,也可以复制)