Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Crystal Reports加载报告文档失败_C#_Visual Studio 2010_Crystal Reports_Crystal Reports 2010 - Fatal编程技术网

C# Crystal Reports加载报告文档失败

C# Crystal Reports加载报告文档失败,c#,visual-studio-2010,crystal-reports,crystal-reports-2010,C#,Visual Studio 2010,Crystal Reports,Crystal Reports 2010,我在vs 2010 c#上使用crystal reports,并使用CR的rpt文档创建pdf文件 我把这段代码放在windows服务上,我的代码正常工作30-40次,但每次进程内存都会以+5+7的速度增长 上次我得到这样的错误:加载文件失败 我的代码:(我想我应该处理/关闭conn,但如何处理) 我最后调用的函数是创建pdf: public MemoryStream asPdf { get { using (TempMe

我在vs 2010 c#上使用crystal reports,并使用CR的rpt文档创建pdf文件

我把这段代码放在windows服务上,我的代码正常工作30-40次,但每次进程内存都会以+5+7的速度增长

上次我得到这样的错误:加载文件失败

我的代码:(我想我应该处理/关闭conn,但如何处理)

我最后调用的函数是创建pdf:

     public MemoryStream asPdf
    {
        get
        {
            using (TempMemoryStream = (MemoryStream)reportDocument.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat))
            {
                return TempMemoryStream;
            }
        }
    } 
谢谢你的建议,请帮帮我

    private void LoadReport()
    {
        doc = new ReportDocument();
        doc.Load(Server.MapPath("CrSalesReport.rpt"));
        doc.SetDatabaseLogon(AppConfig.ReportServerDSUserName, AppConfig.ReportServerDSPassword, AppConfig.ReportServerDomain, "TexERP", false);

    }
请为数据库登录尝试此代码

请尝试此代码

ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(Server.MapPath("CrystalReport.rpt"));
crystalReport.SetDatabaseLogon("username", "password", @"server name", "DB name");
CrystalReportViewer1.ReportSource = crystalReport;

希望它能帮助您。

我像这个示例一样转换了我的代码,它可以工作

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using CrystalDecisions;
using CrystalDecisions.CrystalReports;
using CrystalDecisions.CrystalReports.Engine;

namespace Test.Utilities
{
   public class ReportFactory
   {
       protected static Queue reportQueue = new Queue();

       protected static ReportClass CreateReport(Type reportClass)
      {
        object report = Activator.CreateInstance(reportClass);
        reportQueue.Enqueue(report);
        return (ReportClass)report;
      }

    public static ReportClass GetReport(Type reportClass)
    {
        //75 is my print job limit.
        if (reportQueue.Count > 75) ((ReportClass)reportQueue.Dequeue()).Dispose();
        return CreateReport(reportClass);
    }
  } 
}

这是代码中设置数据库登录的部分,而不是加载报告的部分(错误是“加载文件失败!”)。你可能会显示你工作的正确部分。我不使用CrystalReportViewer。它是唯一的dll,它会返回pdf流。如果仍然存在,可能是权限问题。为此,请参考链接“我的代码”在2-3小时内正常工作。但存在内存泄漏问题,因此请删除临时文件,因为rpt文件是在临时文件夹中创建的副本。按Ctrl+r并在运行时键入%temp%。删除打开文件夹中的所有文件
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(Server.MapPath("CrystalReport.rpt"));
crystalReport.SetDatabaseLogon("username", "password", @"server name", "DB name");
CrystalReportViewer1.ReportSource = crystalReport;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using CrystalDecisions;
using CrystalDecisions.CrystalReports;
using CrystalDecisions.CrystalReports.Engine;

namespace Test.Utilities
{
   public class ReportFactory
   {
       protected static Queue reportQueue = new Queue();

       protected static ReportClass CreateReport(Type reportClass)
      {
        object report = Activator.CreateInstance(reportClass);
        reportQueue.Enqueue(report);
        return (ReportClass)report;
      }

    public static ReportClass GetReport(Type reportClass)
    {
        //75 is my print job limit.
        if (reportQueue.Count > 75) ((ReportClass)reportQueue.Dequeue()).Dispose();
        return CreateReport(reportClass);
    }
  } 
}