ファイルのアップロードを含むブラウザからの POST を受け入れる小さなクラスがあります。私は StreamReader を使用してそれを読み取ります。ヘッダーを読み取り、本文に到達したら、コンテンツの長さを取得し、そのサイズの配列を作成してから、次のようstream.ReadBlock()
にします。
char[] buffer = new char[contentLength];
stream.ReadBlock(buffer, 0, contentLength);
String body = new string(buffer);
これを実行してテキスト ファイルを POST すると、正常に動作します。ただし、ZIP ファイルと MP3 ファイルの両方を試しましたが、どちらも機能しません。stream.ReadBlock()
通話中にハングアップするだけです。
Mono 2.6.7を搭載したUbuntu 10.04でこれを最初に試しました(私のMonoDevelopプロジェクトは.net 3.5を使用するように設定されています)。そして、VisualStudio 2010 と .net 3.5 で同じプロジェクトを実行して、Windows7 でも同じことが起こることを確認しました。Firefox と Chrome の両方から投稿してみました。
なぜこれが起こるのか、誰にも手がかりがありますか?ありがとう。
また、StreamReader の代わりに BinaryReader を使用してみました。
byte[] bytes = reader.ReadBytes(contentLength);
しかし、今何があってもその通話にハングアップしてしまいます。StreamReader を使用して POST のヘッダーを読み取り、次に BinaryReader を使用して本文を読み取るためですか?