Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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# ExportToHttpResponse给出了“出口到HttpResponse”;无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部。”;_C#_Asp.net_Crystal Reports_Httpresponse - Fatal编程技术网

C# ExportToHttpResponse给出了“出口到HttpResponse”;无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部。”;

C# ExportToHttpResponse给出了“出口到HttpResponse”;无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部。”;,c#,asp.net,crystal-reports,httpresponse,C#,Asp.net,Crystal Reports,Httpresponse,加载ASP.Net页面时,将调用报表函数 protected void Page_Load(object sender, EventArgs e) { GlobalFunctions obj = new GlobalFunctions(); obj.GetReport(Page PageName, string ReportName); } GetReport定义为: public void GetReport(Page PageName, string ReportName)

加载ASP.Net页面时,将调用报表函数

protected void Page_Load(object sender, EventArgs e)
{
    GlobalFunctions obj = new GlobalFunctions();
    obj.GetReport(Page PageName, string ReportName);
}
GetReport定义为:

public void GetReport(Page PageName, string ReportName)
{
    ReportClass rpt = new ReportClass();
    rpt = GetReportFromDLL(ReportName);   //No error here
    rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, ReportName); 
}
错误:

“响应”不能通过类访问

我试着用“HttpContext.Current.Response”代替“Response”

但我得到了这个错误:

public void GetReport(Page PageName, string ReportName)
{
    try
    {
        ReportClass rpt = new ReportClass();
        rpt = GetReportFromDLL(ReportName);   //No error here
        rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, ReportName);
    }
    catch (Exception ex)
    {
        //do nothing
    } 
}
“无法计算表达式,因为代码已优化或存在错误。” 本机帧位于调用堆栈的顶部。“


请帮忙

我不知道为什么不能将响应传递给函数。。。试着跟随

  public void GetReport(HttpResponse response, string ReportName)...
并称为:

   obj.GetReport(Response, "some report name");

经过一番努力,我发现exportToHttpReporte总是抛出一个错误,即“无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部。”如果整个代码块不在Try-Catch块中。

以下是避免此错误的解决方案:

public void GetReport(Page PageName, string ReportName)
{
    try
    {
        ReportClass rpt = new ReportClass();
        rpt = GetReportFromDLL(ReportName);   //No error here
        rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, ReportName);
    }
    catch (Exception ex)
    {
        //do nothing
    } 
}

这只会删除错误,并在HttpResponse上打印报告。

您是否尝试过使用引用而不是实例?我认为Page在复制方面有问题。我怀疑PASS <代码>响应<代码>是因为代码风格不能接受,但无论如何都要尝试……CAMRON,我应该作为参考传递什么?请clarify@AlexeiLevenkov-如果GetReport函数位于Default.aspx页面中,则代码有效。目前,由于GetReport函数驻留在GlobalFunctions.cs中,“Response”不可访问。很抱歉没有澄清,我对提供建议不太熟悉。我认为页面是可变的。如果我没记错的话,页面实例是在实现本身的范围之外创建的,实际上是在服务器响应的实例之外创建的。我认为页面实例是由产生IIS响应的线程创建的,并且受到保护,不被复制。谢谢Alexie,但我仍然收到相同的错误{无法计算表达式,因为代码已优化,或者调用堆栈顶部有本机框架。}@IshGoel,你知道你发布的错误与代码无关,是吗?搜索错误文本对于开发人员来说是一项重要的技能,但很少有,下面是错误的解释。现在,您的代码很可能有bug,这就是您最终调试它的原因,但它不太可能与您试图修复的代码有关。这是解决方案吗?