【发布时间】:2016-08-20 05:14:23
【问题描述】:
在我的 mvc 应用程序中,我在 actionFilter 中使用了以下代码
public void OnActionExecuted(ActionExecutedContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (!String.IsNullOrEmpty(acceptEncoding))
{
acceptEncoding = acceptEncoding.ToUpperInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (acceptEncoding.Contains("GZIP"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
我已经使用 iTextsharp 生成 pdf 文件,我的代码如下
public ActionResult GenerateSamplePDF()
{
//return null;
try
{
Response.Clear();
string pdfBody = string.Empty;
pdfBody = "sample text for generating pdf";
Document document = new Document();
string fileName = "Sample.pdf";
var fPath = HttpContext.Server.MapPath("~/BillGeneration/");
PdfWriter.GetInstance(document, new FileStream(fPath + fileName, FileMode.Create));
document.Open();
iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
hw.Parse(new StringReader(pdfBody));
document.Close();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "inline;filename=" + fileName + "");
Response.ContentType = "application/pdf";
Response.WriteFile(HttpContext.Server.MapPath("~/BillGeneration/") + fileName);
Response.Flush();
Response.Clear();
}
catch (Exception ex)
{
string exxx = ex.Message;
}
return Json(null);
}
执行时出现异常“发送 HTTP 标头后服务器无法附加标头。”如何重写代码以消除此异常?
【问题讨论】:
标签: c# asp.net-mvc itextsharp