2009-05-09 6 views
5

私のアプリケーションは、(ユーザーがボタンをクリックしたことに応答して)ポップアップ(たとえば、メニュー/ツールバーなし)のブラウザウィンドウにプッシュします。これは、IE7を除くすべてのブラウザで動作します。 IE7では、空白のウィンドウしか表示されません。ここでASP.NET 3.5サイトからPDFファイルをIEにプッシュする

はPDFを押し出すサーバー側のコードです:クライアント側で

private void StreamPDFReport(string ReportPath, HttpContext context) 
{ 
    context.Response.Buffer = false; 
    context.Response.Clear(); 
    context.Response.ClearContent(); 
    context.Response.ClearHeaders();   

    // Set the appropriate ContentType. 
    context.Response.ContentType = "application/pdf"; 
    context.Response.AddHeader("Content-Disposition", "inline; filename=Report.pdf"); 
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache);   

    // Write the file directly to the HTTP content output stream. 
    context.Response.WriteFile(ReportPath); 
    HttpContext.Current.ApplicationInstance.CompleteRequest(); 
    //context.Response.End(); 
} 

、ユーザーがボタンを押したときに、以下ののonClickハンドラ内で起こる:onclickの

= "window.open( 'RptHandler.ashx?RptType = CaseInfo'、 'Report'、 'top = 10、left = 10、width = 1000、height = 750')

本当に基本的なものがないのですか?すべてのブラウザで動作しますがIEでは動作しません。

答えて

4

これは、次の文は、PDFを表示しないようにIEの原因となることが判明しました。

+0

これはHTTPSで動作していますか? – wweicker

+0

いいえ、そうではありません。 – AngryHacker

+0

http://support.microsoft.com/kb/323308で既知の問題が見つかりました –

3

IE7では、送信するPDFのサイズに「content-length」というヘッダーを追加する必要があることがわかりました。

Response.AddHeader( "content-length"、{pdfのサイズ));

context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 

ない理由を確認してください。

+0

あなたが言ったことは真実ですが、そうではありません。 – AngryHacker

2

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);のように見えるのは、IIS7を使用している場合のみです。

context.Response.AddHeader("Cache-Control", "no-cache");に変更しました。IE7とIE8で動作しているようです。

関連する問題