MSSQL varbinary(MAX) フィールドに格納された PDF でクライアントに応答しようとしています。応答は、http 接続を介してローカルホストとテストサーバーで機能しますが、https 接続を介して実稼働サーバーでは機能しません。シンプルな BinaryWrite (以下のコード) を使用しています。
byte[] displayFile = DatabaseFiles.getPdfById(id);
Response.ContentType = "application/pdf";
Response.BinaryWrite(displayFile);
ここには派手なものはありません。バイナリ データを取得し、コンテンツ タイプを設定して、クライアントに書き戻すだけです。このように https で応答するために何か特別なことをする必要はありますか?
編集:機能しないということは、ブラウザに空白のドキュメントが表示されるということです。Acrobat がブラウザーにロードされません。
編集:この問題は IE 7 でのみ発生していることに気付きました。PDF は Firefox 3 で正しく読み込まれます。クライアントは IE 7 のみを使用しています (IE 6 からアップグレードするよう説得しました...笑)。
編集:ファイルを添付ファイルとして機能させるために、ヘッダー「content-disposition」を追加しようとしました。IE エラー「Internet Explorer は、ProductionServer.net から displayFile.aspx をダウンロードできません。(以下のコード)
byte[] displayFile = DatabaseFiles.getPdfById(id);
Response.Clear();
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", fileName));
Response.ContentType = "application/pdf";
Response.BinaryWrite(displayFile);
編集:ファイルが運用サーバーで http 経由で表示される場合、ブラウザーは、メモ帳で表示されているように PDF のコードを表示します。(例: %PDF-1.4 %âãÏÓ 6 0 obj <> endobj xref 6 33 ...など)