c# - 尝试使用 memorystream 显示 PDF 时无法评估表达式错误
问题描述
我正在尝试生成我的 SharePoint 页面的 PDF,但不断收到“无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上”。错误。我要以正确的方式做这件事吗?
protected void btnDownload_Click(object sender, EventArgs e)
{
try
{
SPSite spBtnSite = new SPSite(SPContext.Current.Site.Url);
SPWeb btnSPWeb = SPContext.Current.Web;
string doclibURL = string.Empty;
using (MemoryStream ms = new MemoryStream())
{
using (var pdfWriter = new PdfWriter(ms))
{
ConverterProperties properties = new ConverterProperties();
pdfWriter.SetCloseStream(false);
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
//For setting the PAGE SIZE
pdfDocument.SetDefaultPageSize(iText.Kernel.Geom.PageSize.A4);
Document document1 = new Document(pdfDocument, pdfDocument.GetDefaultPageSize(), false);
using (var document = HtmlConverter.ConvertToDocument(hidText.Text, pdfDocument, properties))
{
}
ms.Position = 0;
byte[] bytesInStream = ms.ToArray(); // simpler way of converting to array
ms.Close();
if (bytesInStream != null)
{
Page.Response.Clear();
Page.Response.ClearHeaders();
Page.Response.ClearContent();
Page.Response.ContentType = "application/pdf";
Page.Response.AddHeader("content-length", bytesInStream.Length.ToString());
Page.Response.BinaryWrite(bytesInStream);
Page.Response.End();
}
}
}
}
catch (Exception ex_btnSubmit_Click)
{
Exceptions.SaveException(UserID, ex_btnSubmit_Click.Message, ex_btnSubmit_Click.StackTrace, (ex_btnSubmit_Click.InnerException != null) ? ex_btnSubmit_Click.InnerException.Message : "");
}
}
解决方案
你ThreadAbortException
上了Response.End()
。根据这个,你应该使用HttpContext.Current.ApplicationInstance.CompleteRequest
而不是Response.End()
。
推荐阅读
- php - CodeIgniter 上的自定义数据类型
- powershell - 从文件中保存和检索字典对象
- c - 创建一个变量并随后将其内存地址增加 1
- c# - 将两个值存储在一个 DB 列中
- python - 在 django customuser 中注册后如何自动登录?
- docker - 如何在运行 Docker 命令之前激活 conda 环境
- javascript - 无法在无头浏览器中读取控制台日志
- ruby-on-rails - 使用 Rails 控制台查询具有条件的多个模型
- swift - 如何从 TabBar 到达 NavigationController 上的 rootViewController?
- c# - 在控制台应用程序中使用 KeysConverter