在加载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);
但是我收到了这个错误:
“无法评估表达式,因为代码已优化或a 本机框架位于调用堆栈的顶部。“
请帮忙!
答案 0 :(得分:0)
我不确定为什么你不能将响应传递给函数...请尝试以下
public void GetReport(HttpResponse response, string ReportName)...
并致电:
obj.GetReport(Response, "some report name");
答案 1 :(得分:0)
经过努力,我发现 ExportToHttpReponse总是抛出错误“无法评估表达式,因为代码已经过优化,或者本机框架位于调用堆栈之上。” 如果整个代码块不在Try-Catch Block中。
以下是避免此错误的解决方案:
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上。