Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Asp.net 未找到Crystal报告方法_Asp.net_Model View Controller_Crystal Reports - Fatal编程技术网

Asp.net 未找到Crystal报告方法

Asp.net 未找到Crystal报告方法,asp.net,model-view-controller,crystal-reports,Asp.net,Model View Controller,Crystal Reports,我做了一个反馈项目。我是在ASP.NETMVC5上制作的,它还有水晶报表。报告工作正常,但突然停止工作。我不知道他们怎么了。但从上周开始,我一直在努力寻找解决方案,但不幸的是,我找不到解决方案的合适人选。我下载了不同的运行时间,但都失败了。这是错误的底线 “未找到方法:'CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExpo

我做了一个反馈项目。我是在ASP.NETMVC5上制作的,它还有水晶报表。报告工作正常,但突然停止工作。我不知道他们怎么了。但从上周开始,我一直在努力寻找解决方案,但不幸的是,我找不到解决方案的合适人选。我下载了不同的运行时间,但都失败了。这是错误的底线

“未找到方法:'CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.ReportAppServer.ReportDefModel.ISCRExportOptions.get_ExportOptionsEx()'” 代码如下:

public CrystalReportFeedback UserFeedbackDateWise(反馈报告be){

报告开头:

public CrystalReportFeedback(string reportPath, FeedbackReport be)//, object dataSet)
        {
            //int[] array;
            string strConnect = Convert.ToString(System.Configuration.ConfigurationManager.ConnectionStrings["TSC"]);
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(strConnect);
            string _username = builder.UserID;
            string _pass = builder.Password;
            string _server = builder.DataSource;
            string _database = builder.InitialCatalog;
            ReportDocument reportDocument = new ReportDocument();
            //
            reportDocument.Load(reportPath);
            reportDocument.SetDatabaseLogon(_username, _pass, _server, _database);
            if (be.Region_Id != 0)
            {
                reportDocument.SetParameterValue("@Region_Id", be.Region_Id);
            }
            if (be.User_Id != 0)
            {
                reportDocument.SetParameterValue("@User_Id", be.User_Id);
            }
            reportDocument.SetParameterValue("@FromDate", be.FromDate);
            reportDocument.SetParameterValue("@ToDate", be.ToDate);
            //reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "C:\report.pdf");
            _contentBytes = StreamToBytes(reportDocument.ExportToStream(ExportFormatType.PortableDocFormat));
        }
导出方法:

    public override void ExecuteResult(ControllerContext context)
    {

        var response = context.HttpContext.ApplicationInstance.Response;
        response.Clear();
        response.Buffer = false;
        response.ClearContent();
        response.ClearHeaders();
        response.Cache.SetCacheability(HttpCacheability.Public);
        response.ContentType = "application/pdf";

        using (var stream = new MemoryStream(_contentBytes))
        {
            stream.WriteTo(response.OutputStream);
            stream.Flush();
        }
    }

    private static byte[] StreamToBytes(Stream input)
    {
        byte[] buffer = new byte[16 * 1024];
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
    }
希望我能尽早得到解决方案

这是修改后的代码:

[HttpGet]

    public FileResult UserFeedbackDateWise(FeedbackReport be)
    {

        if (Session["CurrentUser"] != null && Convert.ToInt32(Session["User_Id"]) != 0)
        {
            string reportPath = Path.Combine(Server.MapPath("~/Reports"), "UserFeedbackReport.rpt");
            if (ModelState.IsValid)
            {

                be.FromDate = Convert.ToDateTime(TempData["UserFromDate"]);
                be.ToDate = Convert.ToDateTime(TempData["UserToDate"]);
                be.User_Id = Convert.ToInt32(Session["User_Id"]);
            }
            string strConnect = Convert.ToString(System.Configuration.ConfigurationManager.ConnectionStrings["TSC"]);
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(strConnect);
            string _username = builder.UserID;
            string _pass = builder.Password;
            string _server = builder.DataSource;
            string _database = builder.InitialCatalog;
            ReportDocument reportDocument = new ReportDocument();
            //
            reportDocument.Load(reportPath);
            reportDocument.SetDatabaseLogon(_username, _pass, _server, _database);
            if (be.Region_Id != 0)
            {
                reportDocument.SetParameterValue("@Region_Id", be.Region_Id);
            }
            if (be.User_Id != 0)
            {
                reportDocument.SetParameterValue("@User_Id", be.User_Id);
            }
            reportDocument.SetParameterValue("@FromDate", be.FromDate);
            reportDocument.SetParameterValue("@ToDate", be.ToDate);

            Stream stream = reportDocument.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

            //Here i have my stream with my pdf report, i just create a new FileStreamResult and return it to my client like that : 
            FileStreamResult myfile = new FileStreamResult(stream, "application/pdf");
            return myfile;
                //new CrystalReportFeedback(reportPath, be);
        }
        else
        {
            return null;
            //new CrystalReportFeedback(reportPath, be);
        }
    }

我会尽力帮助你导出你的报告,但你的帖子不是很清楚。在下一篇帖子中,请尽量具体,提供尽可能多的信息

我目前做了一个MVC项目,并将crystalreport报告从我的控制器导出到我的客户机

我认为您的
executesult
方法可以工作,但是使用httpcontext是无用的,Crystalreport和.NET提供了一些有用的方法来实现这一点。 因此,我将向您展示如何创建和导出报告,以便您可以复制/粘贴和修改代码

这是我的控制器方法,通过按钮调用:

[HttpGet]
    public FileResult InitReport()
    {
     //I create my report here
     FileImportReport rptH = new FileImportReport();

     // Some configuration on the report, datasource, databaselogon .. etc
     ...
     //

     //Then I export my report to a pdf stream like that :
     Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

     //Here i have my stream with my pdf report, i just create a new FileStreamResult and return it to my client like that : 
     FileStreamResult myfile = new FileStreamResult(stream, "application/pdf");

     return myfile;

    }
我的方法是通过按钮调用的,但它可以按照您的需要工作,或者文件可以保存在任何已知路径中

您可以测试以复制我的代码,在
CrystalReportFeedback
方法中将我的代码与
reportDocument
对象一起使用,您不需要使用
StreamToBytes
方法

问候,

编辑:包含错误的有用链接:


这不是编码问题,而是运行时问题。crystal运行时的版本或应用程序的比特数

首先要尝试的一件事是升级两个开发版本,并确保在生产环境中运行相同的版本。有关更多详细信息,请参阅

它说:

将应用程序编译为“X86模式”或“X64模式” 在部署计算机上安装特定版本的运行时


i、 e.如果应用程序编译为32位,则安装32位运行时。

请提供加载报表的位置以及导出报表时的代码,谢谢。@Furtiro请参阅codeLast函数导出报表Hello,因此您希望将crystal报表导出为pdf格式,从控制器导出到客户端?如果这是point、 我在这里没有看到任何crystal报表初始化,您在哪里创建报表?string reportPath=Path.Combine(Server.MapPath(“~/Reports”),“UserFeedbackReport.rpt”);if(ModelState.IsValid){be.FromDate=Convert.ToDateTime(TempData[“UserFromDate”]));be.ToDate=Convert.ToDateTime(TempData[“UserToDate”]);be.User_Id=Convert.ToInt32(Session[“User_Id”]);}返回新的CrystalReportFeedback(reportPath,be);}先生@Furtiro:'(哪一行导致此错误?我用有用的链接编辑了我的答案,如果工作代码不工作,则可能是Crystalreport安装或运行时错误(或配置错误)Stream=rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);此行显示错误是已解决。存在版本问题。Thanx alot:)你知道如何检查visual studio 2013的版本吗?因为这是我的官方笔记本电脑,所有的东西都已经安装在这台笔记本电脑上了。你能告诉我这是你需要升级的crystal版本吗?检查web.config文件以确定你的应用程序正在运行的版本。你想在13.x范围内,然后观察the支持包版本。您可以从以下位置下载:
[HttpGet]
    public FileResult InitReport()
    {
     //I create my report here
     FileImportReport rptH = new FileImportReport();

     // Some configuration on the report, datasource, databaselogon .. etc
     ...
     //

     //Then I export my report to a pdf stream like that :
     Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

     //Here i have my stream with my pdf report, i just create a new FileStreamResult and return it to my client like that : 
     FileStreamResult myfile = new FileStreamResult(stream, "application/pdf");

     return myfile;

    }