ASP .NET + IIS + Crystal Reports +加载报告失败

时间:2012-03-21 16:57:32

标签: asp.net-mvc-3 iis crystal-reports

我正在使用ASP .NET MVC 3框架开发Web应用程序 我已经实现了一个包含CrystalReportViewer控件的ASPX页面。

我在ASPX页面的Page_Load事件方法中实例化一个ReportDocument对象 然后我使用ReportDocument的Load方法加载RPT文件。

当我使用VS2010开发Web服务器时,我的RPT正确加载,我可以通过我的查看器查看它 但是当我使用IIS 5.1本地Web服务器时,对ReportDocument的Load方法的调用引发了异常。

以下是有关例外的一些信息:

  • 异常类型:CrystalReportsException
  • 消息:加载报告失败
  • 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时,有人知道为什么会引发异常吗?

2 个答案:

答案 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)

我遇到了同样的问题以及我为解决“加载报告失败”问题所做的工作。

  1. 在发布asp.net项目后,首先检查项目文件夹中是否存在报告文件夹或.rpt个文件。我只是将整个项目文件夹放在IIS根目录中。我在“Reports”文件夹中使用我的报告,不会导致任何错误。
  2. 然后复制C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13” into your project main folder like C:\inetpub\wwwroot\YourProjectFolder\
  3. 如果不起作用,请评论。