4

そのため、pdfインライン応答を返そうとしたために、しばらくの間この問題が発生しています。これに対する回答をコーディングのヘルプページ全体で検索しましたが、まだ機能するものを見つけることができません。以下に、私が行っていることの簡単な例を作成しました。しかし、コアはすべて実際の生産と同じです。この問題は常に発生するとは限りませんが、発生すると厄介です。奇妙なタイミングの問題か、私が見ていない何かが起こっているようです。

System.Web.HttpException (0x80004005): ファイルが見つかりません ---> System.Web.HttpException (0x80004005): サーバーは、HTTP ヘッダーが送信された後にヘッダーを追加できません。

誰もこれを修正する方法を知っていますか??

    [HttpGet]
    public ActionResult PDF(string id, bool inline = false)
    {
        try
        {
            MemoryStream PDFStream = GetPdfStream(id);

            PDFStream.Position = 0;

            string PDFFile = "Test.pdf";


            if (inline)
            {
                Response.AppendHeader("Content-Disposition", string.Format("inline; filename={0}", PDFFile));
                Response.BufferOutput = true;
                return File(PDFStream, MediaTypeNames.Application.Pdf);
            }
            else
                return File(PDFStream, MediaTypeNames.Application.Pdf, PDFFile);
        }
        catch (Exception Ex)
        {
            throw new HttpException(404, "File Not Found", Ex);
        }
    }
4

1 に答える 1

2

新しいものを追加する前に、まずヘッダーをクリアする必要があります

if (inline)
{
   Response.ClearHeaders();

Response.AppendHeader("Content-Disposition", string.Format("inline; filename={0}", PDFFile));
Response.BufferOutput = true;
return File(PDFStream, MediaTypeNames.Application.Pdf);
}
else
return File(PDFStream, MediaTypeNames.Application.Pdf, PDFFile);
于 2012-07-31T17:11:21.577 に答える