当前位置: 首页 > 编程语言 > C#

无法对网页上的表达式求值....分享

时间:2023-04-10 21:15:20 C#

调用堆栈当前在我的异常中看到这个:{无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上。这是有问题的代码。在response.End()上抛出异常;数据集dataSet=newDataSet();dataSet.Tables.Add(表);//表是一个格式良好的数据表,由存储在会话变量HttpResponse中的数据构成HttpResponseresponse=HttpContext.当前.响应;响应.清除();响应.Charset="";response.ContentType="application/vnd.ms-excel";response.AddHeader("Content-Disposition","attachment;filename="ExcelFile.xls"");使用(StringWriterstringWriter=newStringWriter())使用(HtmlTextWriterhtmlTextWriter=newHtmlTextWriter(stringWriter)){DataGriddataGrid=newDataGrid{DataSource=dataSet.Tables[0]};dataGrid.DataBind();数据网格。渲染控件(htmlTextWriter);响应.Write(stringWriter.ToString());响应.End();}此代码用于网页上的“导出到Excel”按钮。这是直接从另一个使用相同功能的页面复制的。关于如何调试此问题的任何想法?我怎样才能到达可以看到异常的地步?另外,相关问题如何适用于此?最佳答案和选择的答案非常模糊。请注意,表中的数据存储在会话状态中。提前致谢。代码很好。当你执行Response.End()时,你会得到一个ThreadAbortException:http://support.microsoft.com/kb/312629/EN-US/有些人认为Response.End()过于激进:Response.End()considered有害?我建议处理这个特定的异常(因为你知道你会得到它),并移动response.End()(正如mellamokb所建议的):HttpResponseresponse=HttpContext.Current.Response;尝试{数据集数据集=新数据集();DataTable表=newDataTable();dataSet.Tables.Add(表);响应.清除();响应.Charset="";response.ContentType="application/vnd.ms-excel";response.AddHeader("Content-Disposition","attachment;filename="ExcelFile.xls"");使用(StringWriterstringWriter=newStringWriter())使用(HtmlTextWriterhtmlTextWriter=newHtmlTextWriter(stringWriter)){DataGriddataGrid=newDataGrid{DataSource=dataSet.Tables[0]};dataGrid.DataBind();dataGrid.RenderControl(htmlTextWriter);响应.Write(stringWriter.ToString());}响应。结束();}catch(ThreadAbortExceptionex){//在此处记录一些跟踪信息}它无一例外地解决了。而不是Response.End()使用Response.Flush()来不停止页面功能的执行。当我尝试使用页面的响应下载.xlsx文件时,我也遇到了一些问题:打开excel文件后,我收到以下错误文本:Excel在myFilename.xlsx中发现无法读取的内容。是否要恢复此工作簿的内容?如果您信任本书的来源,请单击“是”。通过添加Response.SuppressContent=true;解决了这个问题Response.SuppressContent=true;在Response.Flush()中。使用HttpContext.Current.ApplicationInstance.CompleteRequest()代替Response.End()以上是C#学习教程:无法对网页上的表达式求值....分享全部内容,如果对大家有用,需要的话了解更多C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: