- PR -

ASP.NETアプリからのTXTファイルのダウンロード障害

1
投稿者投稿内容
hirohisa
会議室デビュー日: 2004/11/10
投稿数: 3
投稿日時: 2004-11-10 14:46
ASP.NETでWEBアプリケーションを開発しておりますが、以下のような障害が発生しております。いろいろと調査をしてきたつもりですが、解決の糸口がつかめず途方にくれている状況です。
以下の障害や、文章の最後部にある求めている情報について、一部でも情報をお持ちでしたら是非お知らせください。よろしくお願いします。

使用環境
-----------------------
サーバ
OS: Windows2k Server SP4
.net Framework 1.1 SP1
---------------------------------
クライアントPC:複数台で確認
OS: XP Professional (SP2)
IE6.0 (SP2)
---------------------------------

現象:
txtの拡張子のデータをダウンロードする場合、IEのファイルのダウロードダイアログで開くボタンを押し、メモ帳が起動するが、データが何も表示されない。

詳細:
ASP.NETで開発したWebアプリでブラウザに対して、txtの拡張子のデータをダウンロードさせようとした場合、ブラウザの ファイルのダイアログ が開き、「開く」「保存」ボタンが表示されています。ダイアログに表示されているファイル名、バイト数については正しい情報が表示されているのを確認しています。
このとき「保存」ボタンを押すと、正しくファイルを指定の場所に保存することができるのですが、「開く」ボタンを押すと、メモ帳は起動するが表示内容データがなにもありません。
同様の操作をWinXP SP1, IE6.0SP1の別マシンで行ったところ、ダウンロードのダイアログで「開く」を押したとき、メモ帳が開くのですが、ファイルが見つかりませんというアラートが表示されます。見つからないと警告されたファイルパスにはファイルが存在しませんでした。

この障害の調査で確認した内容:
@ファイルのダウンロードダイアログで「保存」ボタンの動作は正しく動作している。
A同じtxtデータのダウンロード時のファイル名につける拡張子をcsvにした場合、「開く」押下でエクセルが起動していれば、正しく開くことができる。
ただし、エクセルが起動していない場合、ファイルがみつかりませんというアラートが表示されるのですが、ファイル自体はtxtの場合と違って存在していました。
B同じtxtデータのダウンロード時のファイル名につける拡張子をdatにした場合、「開く」押下でブラウザ上に正しいデータが表示される。
Cブラウザを Opera 7.5xにして、拡張子 txt の同じデータをダウンロードし「開く」を押下すると正しくメモ帳で表示される。
Dプロキシ経由で同じWebアプリに接続し、同じtxtファイルをダウンロードし「開く」を押下すると正しくメモ帳で表示される。

--------------------------------------------------------
補足:ダウンロードボタンを押されたときの、ASP.NETのソースについては問題ないと思っておりますが、念のために記述いたします。
(一部ファイル名、サーバ側のファイルパスなどの記述は簡略)
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("Shift-JIS")
Response.AddHeader("Content-Disposition", "attachment; filename=""" & fileName & """")
Response.WriteFile(filePath)
Response.Flush()
Response.End()
--------------------------------------------------------

上記の内容から私が想像していること:
・この障害の調査で確認した内容の@〜Dから、IEの障害ではないか。
・この障害の調査で確認した内容のEから、.NETがブラウザに対して渡しているヘッダ情報が、プロキシ経由で渡されるヘッダ情報と異なるのではないか。

求めている情報:
@同様の現象がおきたとき、実際に解決したということであれば、その解決方法
Aそもそも原因がIEの障害、サーバーの障害、アプリケーションのプログラムミスにあるのかが判断できていないので、それに関する情報
BIE、サーバーの障害であれば、Microsoftのサポート技術情報

以上です。
どんなことでもかまいませんので、気づいたことがあればお知らせください。
よろしくお願いします。
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2004-11-10 16:06
何の根拠もありませんが、、

・Response.ContentType = "text/plain" でも同じですか?

・ファイル名に2バイト文字が使われていませんか?
hirohisa
会議室デビュー日: 2004/11/10
投稿数: 3
投稿日時: 2004-11-10 17:16
dai様
ご返答ありがとうございます。

Response.ContentType の指定についてですが、 "text/plain" を指定しても同じ現象が発生します。
また、IE5.5SP1及びIE6.0SP1について 以下の情報に関連する投稿があったので
Response.ContentType の指定に "application/octet-stream-dummy"というダミーを指定して試したこともあったのですが、同じ現象が発生します。
http://support.microsoft.com/default.aspx?scid=kb;ja;238588

ご指摘のあったファイル名については、拡張子を除いて全て半角英数字のみとしております。

初回投稿時に以下の記述をしておりましたが、この部分は間違いでした。
txtの関連付けのアプリケーションがメモ帳だと、以下のようにメッセージが表示されました。
------------------------------------------------------------------
同様の操作をWinXP SP1, IE6.0SP1の別マシンで行ったところ、ダウンロードのダイアログで「開く」を押したとき、メモ帳が開くのですが、ファイルが見つかりませんというアラートが表示されます。見つからないと警告されたファイルパスにはファイルが存在しませんでした。
------------------------------------------------------------------

以下、ちょっと気になって試して見ました。
txtファイルの拡張子に関連付けを行っているアプリケーションを、変えて試してみたのですが、アプリケーションによって若干動作に違いがあるようにみえます。
試したのはtxtの関連付けのアプリケーションを変更し、ダウンロードで「開く」を押下しました。
・メモ帳:100%開けない、一時ファイルも存在していない。
・Excel:Excelを起動していれば、開ける。一時ファイルは存在する。
・VisualStudio.NET:起動していなくても、100%ではないけれども、開ける。一時ファイルは存在する。開けないときは、ファイルが存在しませんという警告が表示される。

ひきつづき、どんなことでもかまわないので気づいた点があればご指摘ください。
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-11-10 19:32
引用:

hirohisaさんの書き込み(2004-11-10 14:46)より:

クライアントPC:複数台で確認
OS: XP Professional (SP2)
IE6.0 (SP2)
---------------------------------

現象:
txtの拡張子のデータをダウンロードする場合、IEのファイルのダウロードダイアログで開くボタンを押し、メモ帳が起動するが、データが何も表示されない。



 XP SP1 + Internet Securityで、同じ現象が出ています。ファイアーウォールをOFFにして、やってみてください。それで通れば、その辺の設定です。SP2のファイアウォールの設定方法は、私は知りません。
#調査して報告して頂けるとうれしいです。

_________________
Ten.
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 67
投稿日時: 2004-11-10 20:17
こちらの問題に当てはまりませんか?
Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題
hirohisa
会議室デビュー日: 2004/11/10
投稿数: 3
投稿日時: 2004-11-10 21:19
ご返答ありがとうございます。

Jitta様
XP SP2 のファイアウォールをOFF 及び、 クライアントPCのファイアウォール(ウィルスバスター インターネットセキュリティ)を無効にし、試してみましたが現象は回避できませんでした。

Ten.様
作成したASP.NETのWebアプリケーションでは、すべてブラウザのキャッシュを無効にするように以下のコードを記述しておりました。
--------------------------------------------------------
' ブラウザの戻るボタン対策
Response.Cache.SetCacheability(HttpCacheability.NoCache)
--------------------------------------------------------
このコードを削除し、実行したところ、「開く」を押したときに正しくtextエディタで開くことができました。

また、キャッシュを無効にするコードを残したまま attachmentの記述を inlineに変更した場合には「開く」を押すとブラウザに表示されてしまいますが正常に表示されます。
※WinXP_SP2-IE6.0_SP2 及び、 WinXP_SP1-IE6.0_SP2の両方で試しました。

このことから、Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題に該当しているようです。
また、プロキシ経由で同じWebアプリに接続し、同じtxtファイルをダウンロードし「開く」を押下すると正しくメモ帳で表示される。ということもこの障害内容であれば納得がいきます。

残念ながら WinXP_SP2-IE6.0_SP2でもこの現象が発生しており、この問題に対して修正が今のところ行われていないことが分かりました。
しかし、障害原因がわかったことだけでも大変な収穫となりました。

これまで、ご返答いただいた皆様には大変感謝しております。
本当に、ありがとうございました。
1

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