@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ダウンロードダイアログのデフォルトファイル名

1
投稿者投稿内容
へっぽこ
会議室デビュー日: 2002/11/25
投稿数: 8
投稿日時: 2005-02-07 19:38
当方、ASP.Net【C#】でwebページを作成しています。

コマンドボタン押下によるPostBack時の処理で、サーバにCSVファイルを作成し、
クライアントにファイルをダウンロードをする処理を作成しています。

ダウンロード実行時、ダウンロードダイアログで「保存」を選択したときに、
エラーが発生し、以下のメッセージが表示されてしまいます。
「InternetExplorerではXXXXXをダウンロードできません。このインターネットのサイトを
開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。
後でやり直してください。」

XXXXXには現在表示しているWebページのURLが表示されています。
(本来、XXXXX部分はこちらが指定したファイル名になるはずなのですが。)

現象が発生する場合は本番環境のみで、テスト環境では発生しません。
但し、本番機自体で、ブラウザを立ち上げて実行した場合はうまくいきます。
別のマシンからアクセスしたとき、しかもブラウザがIEの場合のみ発生します。
ブラウザはIE6.0(SP1)を仕様しています。
クライアントはWindows2000(SP4)、WindowsXP(SP1)で試しました。

本番環境とテスト環境の違いは、OSが
  ・本番環境:Windows2000Server(アドバンスド・サーバ)
  ・テスト環境:Windows2000Server
のみです

また、ネスケ(バージョン7.2)で実行した場合は「filename」パラメータにて
指定したファイル名が正しく設定されます。IEのみで発生します。

以下、ソースコードです。
-------------------------------------------------------------------------------

Response.AddHeader( "Content-Disposition","attachment;filename=" + strFileName );
Response.ContentType = "text/csv";

// ダウンロード実行
Response.WriteFile( strExportPath );
Response.End();

-------------------------------------------------------------------------------(※仕様によりJavaScriptは使えないです。)

どなたか解決策をお持ちの方がいらっしゃいましたらご教授ください。
よろしくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-02-08 01:04
http://support.microsoft.com/default.aspx?scid=kb;ja;812935
PDFなのでどんぴしゃりではないと思いますがエラー内容は同じですね。

http://ns1.php.gr.jp/pipermail/php-users/2004-May/thread.html#22279
ここの人はCSVでも同じエラーが出たといっています。(phpですがヘッダの話とかは
参考になるかもしれないので。)

何か少しでも参考になれば。検索するとほかにもヒントが見つかるかもしれないです。

「保存」でなく「開く」の場合は正常なのか。
本番環境とテスト環境の違いでしょうね。プロキシとかセキュリティソフトとか。
雲山
会議室デビュー日: 2005/01/17
投稿数: 17
お住まい・勤務地: 流浪の砂布巾
投稿日時: 2005-02-08 10:10
引用:

へっぽこさんの書き込み (2005-02-07 19:38) より:
当方、ASP.Net【C#】でwebページを作成しています。

コマンドボタン押下によるPostBack時の処理で、サーバにCSVファイルを作成し、
クライアントにファイルをダウンロードをする処理を作成しています。

ダウンロード実行時、ダウンロードダイアログで「保存」を選択したときに、
エラーが発生し、以下のメッセージが表示されてしまいます。
「InternetExplorerではXXXXXをダウンロードできません。このインターネットのサイトを
開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。
後でやり直してください。」

XXXXXには現在表示しているWebページのURLが表示されています。
(本来、XXXXX部分はこちらが指定したファイル名になるはずなのですが。)

現象が発生する場合は本番環境のみで、テスト環境では発生しません。
但し、本番機自体で、ブラウザを立ち上げて実行した場合はうまくいきます。
別のマシンからアクセスしたとき、しかもブラウザがIEの場合のみ発生します。
ブラウザはIE6.0(SP1)を仕様しています。
クライアントはWindows2000(SP4)、WindowsXP(SP1)で試しました。




いつもお世話になっております、雲山というものです。
私も同じ症状が出まして、こまっておりました。

http://support.microsoft.com/kb/303750/JA/

MSでも認知していたようでして、ただ私の場合、IE6SP1でも最初は発生しておりました。
私の場合、客先にお願いしてOSの再インストールを行わせていただき、解消しました。
OSをインストールすることなく、IE6SP1を入れなおすことってできましたかね?
へっぽこ
会議室デビュー日: 2002/11/25
投稿数: 8
投稿日時: 2005-02-08 16:23
べるさん、雲山さん ご返事ありがとうございます。
とても参考になります。

実は、表示されたエラーメッセージで検索することをしていませんでした。
お恥ずかしいです。

「保存」でなく「開く」の場合は正常なのか、
とありますが、「開く」の場合でも同様のエラーが発生しました。
説明が足りなくて申し訳ないです。

あと、本番環境とテスト環境の違いに
 ・本番環境:SSLを使用(HTTPS)
 ・テスト環境:非SSL(通常のHTTP)
が漏れていました。
しかも、テスト環境でSSLを使用したところ現象が発生!
この違いが原因となっていました。
(べるさんに教えて頂いたMicrosoftのサポートページを
 見るまで全く気にしていませんでした。。。)

Microsoftのサポートページにあるように、
  ----------------------------------------------------------------
   この問題は、以下のいずれかの状況に該当する場合に発生します。
    • [暗号化されたページをディスクに保存しない] が有効の場合
    • Cache-control: no-cache ヘッダーが送信された場合
    • Cache-control: no-store ヘッダーが送信された場合
  ----------------------------------------------------------------
で、3番目の「Cache-control: no-store ヘッダーが送信された場合」に該当しておりました。
なぜ Cache-control: no-store を使用していたかというと、ブラウザの[戻る]ボタン押下時に
サーバにGetが来るようにしたかったからです。

同サポートページの解決方法を実施したところ、エラーメッセージが表示されることなく
CSVファイルを正常にダウンロードすることが出来ました。

雲山さんにご教授頂いた方も試してみたのですが、
今回の私の場合には当てはまりませんでした。

おかげさまで解決することができました。
ありがとうございました。

当方、未熟者ですのでまたお世話になるかもしれませんが、
そのときは何卒よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)