0

私の状況は次のとおりです。

サーバーからPDFファイルを読み取って返しています。このファイルは、内に表示されますiframe。次のコードはIEで正常に機能します。ただし、Chrome経由でサイトにアクセスすると、すべてのジャンク文字が表示されます。

while ((byteCount = inStr.Read(buffer, 0, buffer.Length)) > 0)
{
    if (HttpContext.Response.IsClientConnected)
    {
            HttpContext.Response.BufferOutput = true;
            HttpContext.Response.ContentType = "application/pdf";                      
            HttpContext.Response.OutputStream.Write(buffer, 0, buffer.Length);
            //HttpContext.Response.Flush();
    }
}

応答をフラッシュすると、PDFが正しく表示されます。問題は、flushを呼び出すと"Server cannot set status after HTTP headers have been sent"、サーバーで警告が発生することです。

質問:Chromeにフラッシュが必要なのはなぜですか?フラッシュを回避する方法があるのですか?これまでのところ、私はすべての投稿を読みましたが、フラッシュに関連するサーバーエラーを解決できません。

サーバー-IIS7、Windows Server 2008 R2

アプリ-ASP.Net4.0.30319.0、C#、Ajax

4

1 に答える 1

0

これがお役に立てば幸いです。コントローラーを元に戻すように変更してくださいFileResult

public FileResult DownloadPDF()
{
    buffer = <bytes from your PDF file>;
    return File(buffer, "application/pdf", "download.pdf");
}

PDFを表示

public FileResult ShowPDF()
{
    buffer = <bytes from your PDF file>;
    return File(buffer, "application/pdf");
}
于 2012-10-27T02:22:00.413 に答える