- PR -

大きいサイズのダウンロードでエラー

1
投稿者投稿内容
eぜんちゃん
会議室デビュー日: 2005/02/01
投稿数: 3
投稿日時: 2005-02-01 11:04
VB.NETでダウンロードの処理を作成中なのですが、以下のようなエラーが出てしまいます。
----------------------------------
HTTP/1.1 500 Internal Server Error Server: Microsoft-IIS/5.1 Date: Tue, 01 Feb 2005 01:31:17 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html
----------------------------------

数百KBのファイルでしたら、ダウンロードできているのですが、MB単位になるとエラーが発生してしまいます。

環境は
 IIS5.1
 WindowsXP SP2
 IE6.0 SP2
です。

ソースは以下の通りです。
Response.Clear()
Response.ContentType = "APPLICATION/OCTET-STREAM"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("Shift-Jis")
Response.AppendHeader("Content-Disposition", "Attachment; filename=sample.bmp")
oDLfile = New FileInfo("c:\\sample.bmp")
Response.WriteFile(oDLfile.FullName)
Response.Flush()

エラーの原因がさぱり分からず行き詰まっています。
ヒントとなるものでも構いませんので、よろしくお願いします。
eぜんちゃん
会議室デビュー日: 2005/02/01
投稿数: 3
投稿日時: 2005-02-08 18:23
自己解決

Response.TransmitFileを使用することで、メモリ上ではなく直接クライアントに転送することにより、実現することができました。
shiren
会議室デビュー日: 2004/10/05
投稿数: 1
投稿日時: 2005-03-07 10:55
eぜんちゃんさん、はじめまして。

私も、同様の現象で悩んでいます。

MSDNで調べたのですけど、
「Response.TransmitFile」が見当たりません。

詳しい方法を教えてください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-03-07 21:24
HttpResponseクラスのTransmitFileメソッド
これって.NET2.0で追加されるメソッドではないですか?
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-03-08 11:53
ども、ぼのぼのです。

引用:

べるさんの書き込み (2005-03-07 21:24) より:
HttpResponseクラスのTransmitFileメソッド
これって.NET2.0で追加されるメソッドではないですか?


私の環境、VS.NET 2003+.NET Framework 1.1 SP1なんですが、
TransmitFileメソッド使えました。

使い方はWriteFileとほぼ同じ?でしょうか。
shirenさんの仰る通りMSDNには載っていなかったのですが、
VB.NETのコードエディタの入力補助?(Response.と書くとプロパティ・メソッドの一覧が出てくる)
の中には、ちゃんといました。
#ちなみに、私はこのメソッドの存在を知りませんでした…
eぜんちゃん
会議室デビュー日: 2005/02/01
投稿数: 3
投稿日時: 2005-03-08 19:27
遅くなりました。

ぼのぼのさんの仰るとおりで、私の環境も
VS.NET 2003+.NET Framework 1.1 SP1でTransmitFileメソッド使用しております。

使い方はResponse.WriteFileと同様で最後のResponse.Flush()は必要ないです。

確かにMSDNに載ってないので、TransmitFileについては、使用しても良いものなのかどうか不明な点が多いです。
Macでは動かないし・・・
TransmitFileの使用方法など詳細についてはVC++.NETやソケット関連の書籍を見ると載っているようです。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-03-08 20:28
あ、ほんとですね。
VS.NET 2003でインテリセンスに出てくるし.NET 1.1 SP1で使えるんですね。

ただ、MSDNのベータ版で「HttpResponse.TransmitFile Method」のところを見ると
「Note: This Method is new in the .NET Framework version 2.0.」
と書いてあります。埋まってるけど正式ではない、みたいな扱いなんでしょかね。
1

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