- - PR -
WebDAVサーバに対する大きなファイルのアップロード
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-11 19:24
【 やりたいこと(実現したいこと) 】
WebDAVサーバに対して、ファイルのアップロード/ダウンロードを 実現したいと思っています。 【 動作環境(WebDAVサーバ) 】 OS:Windows Server 2003 Standard Edition HTTPサーバ:Internet Information Service 【 動作環境(クライアント) 】 OS:Windows XP Professional (SP2) 開発言語:Visual Studio .NET 2003 C# 【 問題点と状況 】 HttpWebRequestを使用して、ファイルをアップロードするロジックを 作成しました。基本的に問題なく動作しています。 大きなサイズ(900MByte)のファイルにて試したところ、 500MByteくらいを送信し終わったタイミングで、 例外エラー(OutOfMemory)が発生してプログラムが落ちました。 【 試したこと(状況) 】 (1) [HttpWebRequest]クラスの[AllowWriteStreamBuffering]プロパティに [false]を設定して、バッファリングを無効にしてみました。 (2) 以下のようなエラー・メッセージが表示されました。 「この要求には、認証または正しいリダイレクトのためのデータのバッファが必要です。」 (3) [HttpWebRequest]クラスの[Credentials]プロパティに認証情報を 設定していたロジックをコメントアウトしてみました。 (4) 大きなサイズ(900MByte)のファイルを送信できましたが、 認証処理が実現できなくなってしまいました。 【 聞きたいこと(知りたいこと) 】 認証処理を実現した上で、大きなサイズ(900MByte)のファイルを アップロードしたいのですが、何か良い対応方法はないでしょうか? アップロードできるファイルサイズにリミット値があるのでしょうか? 【 作成したロジック 】
[ メッセージ編集済み 編集者: けーすけ 編集日時 2006-01-13 17:12 ] | ||||||||||||
|
投稿日時: 2006-01-11 19:50
これは、本当にメモリが不足してるんですね。
こういう情報しか聞いたことがないですね。 IISのWebDAVサービスでサイズの大きなファイル(48K)が413エラーになる
色々回収しようと頑張ってるみたいですが、追いついていないんでしょうか... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-12 23:12
【 状況報告 】
・WebDAVサーバに対する大きなファイルのアップロード http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27405&forum=7 教えて頂いたサイトを参照して、[UploadReadAheadSize]の値を設定しました。 [UploadReadAheadSize]には、最大値(&HFFFFFFFF=4294967295、4 GB)を設定しました。 確認した手順とその結果は、以下の通りです。 (1) 仮想ディレクトリ[/lm/w3svc/1/root/webdav]の設定に[UploadReadAheadSize]を追加した。 @ メタベースの該当箇所をエクスポートした。 >iiscnfg /export /f d:\keisuke\ex.xml /sp /lm/w3svc/1/root/webdav サーバーに接続中...完了。 Configuration exported from /lm/w3svc/1/root/webdav to file d:\keisuke\ex.xml. A 出力された[ex.xml]ファイルに以下の行を追加した。 UploadReadAheadSize="4294967295" B メタベースの該当箇所をインポートした。 >iiscnfg /import /f d:\keisuke\ex.xml /sp /lm/w3svc/1/root/webdav /dp /lm/w3svc/1/root/webdav サーバーに接続中...完了。 Configuration imported from /lm/w3svc/1/root/webdav in file d:\keisuke\ex.xml to /lm/w3svc/1/root/webdav in the Metabase. C 念のためPCを再起動して、動作確認を行ったが、結果は同じだった。 500MByteくらいを送信し終わったタイミングで、 例外エラー(OutOfMemory)が発生してプログラムが落ちました。 (2) 仮想ディレクトリ[/lm/w3svc/1/root/webdav]の設定に[UploadReadAheadSize]を追加した。 @ メタベースの該当箇所をエクスポートした。 >iiscnfg /export /f d:\keisuke\ex.xml /sp /lm/w3svc/1/root サーバーに接続中...完了。 Configuration exported from /lm/w3svc/1/root to file d:\keisuke\ex.xml. A 出力された[ex.xml]ファイルに以下の行を追加した。 UploadReadAheadSize="4294967295" B メタベースの該当箇所をインポートした。 >iiscnfg /import /f d:\keisuke\ex.xml /sp /lm/w3svc/1/root /dp /lm/w3svc/1/root サーバーに接続中...完了。 Configuration imported from /lm/w3svc/1/root in file d:\keisuke\ex.xml to /lm/w3svc/1/root in the Metabase. C 念のためPCを再起動して、動作確認を行ったが、結果は同じだった。 500MByteくらいを送信し終わったタイミングで、 例外エラー(OutOfMemory)が発生してプログラムが落ちました。 報告が遅くなりましたが結局、解決できませんでした(状況は変わりませんでした)。 > これは、本当にメモリが不足してるんですね。 う〜ん。。。本当にメモリが不足してるようには見えません。 試しにWebDAVサーバとクライアントをスペック(メモリ・サイズ)の違うPCに 変えてみても、ちょうど同じサイズ(500MByteくらい)を送信し終わったタイミングで、 例外エラー(OutOfMemory)が発生してプログラムが落ちました。 | ||||||||||||
|
投稿日時: 2006-01-13 01:36
こちらで、まともな回答がついてますね。(^^;)
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=40689 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-13 15:57
上記サイトで[Lady.BUG]さんから教えて頂いた通りのやり方で動作しました。
昨日は、うまく動作しなかったのですが。。。3、4回は試したと思います。 「認証するにはデータのバッファが必要です。」的なメッセージが表示されたと記憶しています。 ところが今日確認したら、何の問題もなく動作しました。 念の為、5回ほど試しましたが正常にアップロードが完了しました。 どうもありがとうございました。m(._.)m | ||||||||||||
|
投稿日時: 2006-01-13 16:47
度々すみません。やはり正常に動作しませんでした。
WebDAVサーバ側のセキュリティ設定(認証設定)をいつの間にか外していたようです。 [Lady.BUG]さんに言われた通り、以下の2行を追加しました。 request.AllowWriteStreamBuffering = false; request.PreAuthenticate = true; そうすると、以下の行を実行する時に例外エラーが発生してしまいます。 // リクエストデータを書込む為のストリームを作成 outputStream = request.GetRequestStream(); エラーメッセージの内容は、以下の通りです。 「この要求には、認証または正しいリダイレクトのためのデータのバッファが必要です。」 何度もすみません。対応方法が分かる方がいれば、よろしくお願いします。 実行モジュールで使用できるヒープ領域やスタックサイズに制限があるのでしょうか? |
1