0

我有一个 FileStreamResult 操作,它使用 iTextSharp 打开 PDF 文档(CAD 绘图),在其上标记我们的公司信息,然后将其传递到要返回的内存流。

在方法内部,我有一个审计方法,它通过实体框架将事务记录到 SQL。当我调用该操作时,我得到三个数据库事务。在调试应用程序时,会点击 SQL 记录函数 3 次。

谁能帮我理解为什么?这和路由有关系吗?

编辑 我做了一些进一步的测试,发现当我直接访问浏览器时,它只调用一次该方法。我正在使用带有 .PDFObject (www.pdfobject.com) 的 jQuery 在另一个视图中呈现 PDF。这个 jQuery 方法调用了 MVC 方法 3 次。我还在调查...

public class DrawingsController : BaseController
{
    static BaseFont ...

    public FileStreamResult Index(string WOBase, string WOSub)
    {
        //Get associated drawing by work order
        WorkOrders WO = db.WorkOrders
            .Where(wo => wo.DRAWING_FILE != null && wo.BASE_ID == WOBase && wo.SUB_ID == WOSub)
            .FirstOrDefault();

        if (!string.IsNullOrEmpty(WO.DRAWING_FILE))
        {
            //The following records the transaction history (x3)
             BaseController.RecordNavigation(_employee.ID, "Print", WO.Drawing_URL);

            string readerURL = modifyPathToURL(WO.DRAWING_FILE);

            Response.Clear();
            MemoryStream ms = new MemoryStream();
            PdfReader reader = new PdfReader(readerURL);

            PdfStamper stamper = new PdfStamper(reader, ms);
            for (int i = 1; i <= reader.NumberOfPages; ++i)
            {
                var stamperOverContent = stamper.GetOverContent(i);
                //Stamp information on document  
                ...
                stamperOverContent.EndText();
                stamperOverContent.RestoreState();
            }

            stamper.Writer.CloseStream = false;
            stamper.Close();

            byte[] byteinfo = ms.ToArray();
            ms.Write(byteinfo, 0, byteinfo.Length);
            ms.Position = 0;
            ms.Seek(0, SeekOrigin.Begin);

            return new FileStreamResult(ms, "application/pdf");
        }
        return null;
    }
4

1 回答 1

1

经过进一步调查,我发现问题出在 Internet Explorer 上。我在 GitHub ( https://github.com/pipwerks/PDFObject/issues/3
) 上研究了 PDFObject ,它指向 Microsoft 支持文章 ( http://support.microsoft.com/kb/293792 ),标题为三个 GET 请求检索插件服务内容时发送

于 2011-12-07T21:09:00.713 回答