我正在使用ASP .NET MVC 3框架开发Web应用程序 我已经实现了一个包含CrystalReportViewer控件的ASPX页面。
我在ASPX页面的Page_Load事件方法中实例化一个ReportDocument对象 然后我使用ReportDocument的Load方法加载RPT文件。
当我使用VS2010开发Web服务器时,我的RPT正确加载,我可以通过我的查看器查看它 但是当我使用IIS 5.1本地Web服务器时,对ReportDocument的Load方法的调用引发了异常。
以下是有关例外的一些信息:
StackTrace:
àCrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
àCrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,OpenReportMethod openMethod,Int16 parentJob)
àCrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
àASP.aspnetforms_editionresultats_aspx.Page_Load(Object sender,EventArgs e)dans .aspx:ligne 43
àSystem.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)
àSystem.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)
àSystem.Web.UI.Control.OnLoad(EventArgs e)
àSystem.Web.UI.Control.LoadRecursive()
àSystem.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
当我使用IIS时,有人知道为什么会引发异常吗?
答案 0 :(得分:2)
这对我有用:
protected void Page_UnLoad(object sender, EventArgs e)
{
this.CrystalReportViewer1.Dispose();
this.CrystalReportViewer1 = null;
// CrystalReportViewer1.Close();
// CrystalReportViewer1.Dispose();
GC.Collect();
}
protected void Button1_Click(object sender, EventArgs e)
{
ReportDocument cryRpt = new ReportDocument();
cryRpt.Load("C:\\inetpub\\wwwroot\\CrystalReportDemo\\CrystalReport.rpt");
CrystalReportViewer1.ReportSource = cryRpt;
CrystalReportViewer1.RefreshReport();
}
}
答案 1 :(得分:0)
我遇到了同样的问题以及我为解决“加载报告失败”问题所做的工作。
.rpt
个文件。我只是将整个项目文件夹放在IIS根目录中。我在“Reports”文件夹中使用我的报告,不会导致任何错误。 C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13” into your project main folder like C:\inetpub\wwwroot\YourProjectFolder\
。 如果不起作用,请评论。