问题描述
我正在尝试生成我的 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()
。根据 this,您应该使用 HttpContext.Current.ApplicationInstance.CompleteRequest
而不是 Response.End()
。