tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルASP.NETでのファイルダウンロード
記事No602
投稿日: 2003/12/19(Fri) 22:50
投稿者sada
[2003]:Windows    [.net2003]:VB.NET   IIS6.0

ASP.NETを使用して、ファイルをダウンロードするプログラムを作成しています。
ところが、ある大きさを超えたファイルをダウンロードすると、
0KBでダウンロードされてしまいます。
ダウンロードで使用しているメソッドは、
HttpResponse.WriteFile(String)を使用しています。
この命令を使用した場合には、何か制限値があるのでしょうか?

どなたか分かる方がいましたら、教えてください。

<以下、ソース>

                    'ファイル名に保存用拡張子を付加
                    Dim objFileName As New StringBuilder
                    objFileName.Append(ObjName.Text)    ← ObjName.textはファイル名

                    'ダウンロード処理
                    Response.ContentType = "Application/Octet-Stream-Dummy"

                    'ファイル名のエンコード
                    Dim strEncodeName As String
                    strEncodeName = System.Web.HttpUtility.UrlEncode(ObjName.Text)

                    'HTTPヘッダー ファイル名の組み立て
                    Dim objHeaderFileName As New StringBuilder
                    objHeaderFileName.Append("attachment; filename=")
                    objHeaderFileName.Append(strEncodeName)

                    'HTTPヘッダーを出力ストリームに追加
                    Response.AddHeader("content-disposition", objHeaderFileName.ToString)

                    'ダウンロードファイルパスの組み立て
                    Dim objFilePath As New StringBuilder
                    objFilePath.Append(MyBase.CurrentDir)       'カレントディレクトリ
                    objFilePath.Append(OPE_DIR_MARK)            'ディレクトリ区切り
                    objFilePath.Append(objFileName.ToString)    'ファイル名

                    'バッファリングの内容をクライアントへ送信
                    Response.Flush()

                    'コンテンツ出力ストリームに書き込み
                    Response.WriteFile(objFilePath.ToString)
                    
                    Response.End()

[ツリー表示へ]
タイトルここは関係ないですか?
記事No2474
投稿日: 2005/10/27(Thu) 14:56
投稿者習志野権兵衛
hhttp://support.microsoft.com/default.aspx?scid=kb;EN-US;295626
uploadもdownloadも同じことでは?
2003serverだとmachine.configでは?はずしていたらごめんなさい!!

[ツリー表示へ]
タイトルRe: ここは関係ないですか?
記事No2475
投稿日: 2005/10/27(Thu) 17:10
投稿者ふもふも
アップロードとダウンロードは残念ながらちがうみたいです。
私も、ASP.NETの開発を行っていてこの点で現在つまづいちゃってる最中です。
machine.configで設定を変えると、アップロードはうまく言ったのですが、
それをダウンロードすると失敗しますね。
アップロードとダウンロードという言葉を使用していますが、
私の場合は、画像ですのでアップロードした画像ファイルを表示するものを
作ってます。つまり、画像が表示されません。
小さいファイルサイズですと表示されますがある程度大きいサイズになると
表示されなくなりますね。(ダウンロードが失敗する)

[ツリー表示へ]
タイトルASPBufferingLimit はどうでしょう?
記事No2477
投稿日: 2005/10/27(Thu) 20:47
投稿者魔界の仮面弁士
IIS のメタベース プロパティの方は確認されましたでしょうか。

IIS5 の頃は、レスポンスバッファサイズに上限は無かったのですが、
IIS6 においては、データの最大キャッシュサイズ (ASPBufferingLimit 値) の
規定値が、「4,194,304 バイト」と設定されていたりしますけれども。


ASP.NET の事はあまり詳しくないので、外しているかも知れませんが、
少なくとも ASP においては、IIS 側の ASPBufferingLimit の設定を
見直さないと、4MB を超えるデータを返せなかったりしますので……。

# もしくは、バッファを使用しないモードに切り替えるとか。

[ツリー表示へ]
タイトルRe: ASPBufferingLimit はどうでしょう?
記事No2499
投稿日: 2005/11/01(Tue) 15:37
投稿者ふもふも
まず、返答のほうが遅れてしまいまして申し訳ございませんでした。
> IIS のメタベース プロパティの方は確認されましたでしょうか。
> IIS5 の頃は、レスポンスバッファサイズに上限は無かったのですが、
> IIS6 においては、データの最大キャッシュサイズ (ASPBufferingLimit 値) の
> 規定値が、「4,194,304 バイト」と設定されていたりしますけれども。
この設定があるとは知りませんでした。
この点について調べてみました。
本番で使用するのはWindows2003Serverで、デバッグで使用しているのはデバッグマシン(自分のマシン
にIISを起動しLocalHostでデバッグ)であるXP(pro)という違いがあり、
この点でちょっと躓いておりました。
Windows2003Serverですと、「ASPBufferingLimit」を設定するファイルがMetaBase.xmlであるのに
対して、XPではMetaBase.binファイルという違いがありました。
Windows2003ServerのほうのMetaBase.xmlないには「ASPBufferingLimit」という項目がありましたので

これを修正することによりサイズの大きいファイルでも表示(ダウンロード)できるようになりました。
しかし、デバッグマシンの法XP(pro)MetaBase.binファイルのほうは、ファイル名からしてコンパイルさ
れたもののように、内容はバイナリ形式のファイルのようです。この内容をどのようにすれば閲覧また

内容の変更が行えるのかを
調べるとIISリソースキット内にある「MetaBase Explorer」というツールで閲覧、設定内容の変更
が行えることを知りこのツールを使用して、内容を見てみますと「ASPBufferingLimit」という項目
がありません。でこの項目を新規に追加しようとしてみましたが追加できませんでした。
> # もしくは、バッファを使用しないモードに切り替えるとか。
と書かれていましたので、それに該当するような項目「ASPBufferingOn」がありました。
これはDWORD型で「1」が設定されていましたので、これを「0」に変更後、IISを再起動し、
試してみると、大きいサイズでも表示(ダウンロード)できるようになりました。

魔界の仮面弁士さん、今回はご助言のほど頂きありがとうございました。おかげで助かりました。

[ツリー表示へ]