我在服务器上收到错误“加载报告失败”,它在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)
所以请帮助我!或者我的客户会活着吃我......
答案 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)
希望这能解决您的问题
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:始终(如果较新,也可以复制)