2011-09-19 7 views
2

私はプロジェクトにカスタムIHttpModuleを実装しています。このIHttpModuleはフィルタファイルのアップロードとアップロードのステータスを提供します。 私は、カスタムモジュールが早く接続を閉じるようにしたいと思います。相手側が送信するすべてのデータを受信したくない場合は、受信帯域幅を節約して大きくすることができます。ブラウザへの接続を早期に終了し、応答ステータスを返す

HTTPプロトコルを使用する可能性はありますか?

"ContentLength:0"と "Connection:close"ヘッダーを送信しようとしました。応答をフラッシュし、接続を閉じます(HttpWorkerRequest.CloseConnection)。

workerRequest.SendStatus(400, "Bad request"); 
workerRequest.SendKnownResponseHeader(HttpWorkerRequest.HeaderContentLength, "0"); 
workerRequest.SendKnownResponseHeader(HttpWorkerRequest.HeaderConnection, "close"); 
workerRequest.FlushResponse(false); 
workerRequest.CloseConnection(); 
((HttpApplication)sender).CompleteRequest(); 

ブラウザ/ Firefoxの応答に「接続のリセット」というエラーメッセージが表示されています。 サーバーからデータ/ヘッダー/ステータスを受信する兆候がない。

ありがとうございます。

答えて

1

httpクライアントは、データの送信が完了した後にのみ応答を受け取ります。サーバーが接続を閉じるのではなく、応答を送信できるように、サイズの小さい複数の要求を行うようにクライアントを変更する必要があります(これはうまく動作せず、既にテストしたとおりに機能しません)。

通常行われる方法のサンプルについては、http://slfileupload.codeplex.com/に実装されているhttpハンドラを確認してください。

+0

クライアントを変更することは、ブラウザでなければなりません。 –

+0

その場合、ブラウザはステータスを読み取らないこともあります。ステータスの送信には何の意味もありません。 –

+0

アップロードの進行状況。あなたはいつもあなた自身のクライアント側のプラグインをフラッシュまたはシルバーライトで書く必要があります –

関連する問題