2009-12-08 10 views
5

ダウンロード用の動的ファイルを生成し、Response.BinaryWriteを使用してクライアントに送信するページがあります。ASP.NET Response.BinaryWriteファイルのダウンロードがSSLでブロックされています

SSLを使用してテストサーバーに移動したときを除いて、すべて正常に動作しているようです。ダウンロードは新しいウィンドウで行われ、IE7/8では(クロムやFFではなく)タブが開き、閉じますが、File Dialogueは表示されません。

はここで完全なヘッダの書き込みです:

Response.Clear() 
     Response.Buffer = True 
     Response.ContentType = "application/octet-stream" 
     Response.AddHeader("Content-Length", abytFileData.Length.ToString) 
     Response.AddHeader("cache-control", "private") 
     Response.AddHeader("Expires", "0") 
     Response.AddHeader("Pragma", "cache") 
     Response.AddHeader("content-disposition", "attachment; filename=""" & pMsg!pstrFileName & """") 
     Response.AddHeader("Accept-Ranges", "none") 
     Response.BinaryWrite(abytFileData) 
     Response.Flush() 
     Response.End() 

私は、私の問題はhere述べたものだったことを確実に考え

しかし、私のキャッシュ制御ヒードは正しいです。 アイデア

+0

おそらく重複? http://stackoverflow.com/questions/419868/file-download-dialog-ie7-disappears –

+0

投稿は表示されませんでしたが、提供されたリンクは似ています。彼の質問では、キャッシュ制御ヘッダーを何かに指定しなかったため、問題が発生していました。私の場合、私はキャッシュコントロールをプライベートとして指定しています。これはうまくいくはずです。 – Gaidin

+0

有効期限:0またはプラグマが原因である可能性があります。それらを削除することを検討する必要があります。 – EricLaw

答えて

2

私は同じ問題に遭遇してきたとの調査ある程度の後、私はダウンロードがIEのセキュリティ設定によってブロックされていることを示唆しているCodeProjectの記事を見つけました。 [ツール] - > [インターネットオプション] - > [セキュリティ]タブにアクセスし、アクセスしているゾーンの[ダウンロード]オプションを確認する場合は、[ファイルダウンロードの自動プロンプト]を[有効]に変更する必要があります。これに対する「インターネット」ゾーンのデフォルト設定は「無効」です。ここに私が言及した記事へのリンクがあります:http://www.codeproject.com/KB/aspnet/SecureFileDownload.aspx

+0

うん、これも私がやったのと同じ結論だった。 SSL接続のセキュリティ設定がデフォルトで強制的にダウンロードプロンプトを表示しないようにして、セキュリティ設定を変更するようにユーザー全員に指示することは本当にオプションではありません。 IEのセキュリティドロップダウンの警告が表示されるように、私は別のウィンドウでダウンロードを行う代わりに、iframeでダウンロードしました。 – Gaidin

3

ここで答えを参照してください:基本的に

C# BinaryWrite over SSL

、交換してください:

Response.ClearContent(); 
Response.ClearHeaders(); 
+0

申し訳ありませんが、私もそれを試したことに気づきませんでした。運がない。 – Gaidin

1

...と

Response.Clear(); 

はあなたの有効期限やプラグマのヘッダーを変更または削除しようとしたことがあり? SSL経由でPDFファイルをストリーミングするときは、次のコードは、私の作品:

Response.Buffer = True 
Response.ClearContent() 
Response.ClearHeaders() 
Response.AddHeader("Cache-Control", "max-age=3") 
Response.AddHeader("Pragma", "public") 
Response.ContentType = "application/pdf" 
Response.AddHeader("Content-Disposition", "attachment; filename=file.pdf") 
Response.AddHeader("Content-Length", mem_stream.Length.ToString) 
Response.BinaryWrite(mem_stream.ToArray()) 
Response.Flush() 
Response.End() 
関連する問題