C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 126 を表示中)
■74771 / )  Re[2]: WebDAVサーバーファイルアップロードのエラー
□投稿者/ れい (1回)-(2015/01/28(Wed) 17:06:18)
No74767 (DSC渡邊 さん) に返信
> 何が原因で動作しなくなったのか、分からなくて困っています。教えてほしいのは以下の点です。
> @「基礎になる接続が閉じられました: 受信時に予期しないエラーが発生しました」の発生原因の調べ方

ネットワークのトレースを行うか、
WireSharkなどパケットキャプチャソフトを使うのがよいかと思います。
サーバー側のログや、間にルーターやプロキシがあるならそのログも参考になります。

> A上記の修正内容で大容量のファイルアップロードを成功させる方法があれば教えてほしいです。
> B上記以外の修正方法で、アップロードを動作させる方法があれば教えてほしいです。

サーバーを変えて動かなくなったのであれば
うまく動くサーバーと動かないサーバーの「差」を検証すればよいかと。

サーバーの詳細、認証方法などが明示されていないので私の経験からの推測になりますが、
単に認証で蹴られているだけかと思います。
ですので下記の方法で試すとよいかと。

方法@ 空PUT

まず、
HttpWebRequest.ContentLength=0
を指定してPUTで目的のファイルと同名の空ファイルを作成。
その後すぐに
HttpWebRequest.ContentLength=正しいファイルサイズ
HttpWebRequest.AllowWriteStreamBuffering = false
HttpWebRequest.SendChunked=false
としてもう一度上書きでPUT。

方法A PreAuth

HttpWebRequest.PreAuthenticate = true
HttpWebRequest.ContentLength=正しいファイルサイズ
HttpWebRequest.AllowWriteStreamBuffering = false
HttpWebRequest.SendChunked=false
としてPUT


サーバーのアクセス権の設定や認証方式によっては上記ではダメな場合があります。
その場合はサーバーの設定などの詳細があればわかるかもしれません。

それと

> ※「request.SendChunked = False」の設定をして、「request.AllowWriteStreamBuffering = False」のままだと「この要求には、データのバッファーが必要です。」というエラーになってしまう為、「request.AllowWriteStreamBuffering = False」を「True」にしました。

ContentLengthを設定すればエラーは出ないはずです。

返信 編集キー/


管理者用

- Child Tree -