1

在加载 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”

rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat,HttpContext.Current.Response, true, ReportName);

但我得到这个错误:

“无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。”

请帮忙!

4

2 回答 2

0

经过一番努力,我发现ExportToHttpReponse 总是抛出错误“无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。” 如果整个代码块不在 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 上。

于 2013-06-13T05:41:16.207 回答
0

我不确定为什么您不能将响应传递给函数...尝试以下操作

  public void GetReport(HttpResponse response, string ReportName)...

并调用为:

   obj.GetReport(Response, "some report name");
于 2013-04-17T06:21:02.883 回答