2009-05-23 10 views
1

ファイルを取得するためにWebサービスを呼び出すカスタムHttpHandlerがあります。テストでは、私はプロダクションWebサービスを呼び出し、HttpHandlerはファイルを正しく返します。私はそれをサーバー上の実動環境でテストすると、うまく動作します。しかし、リモートクライアント(サーバーではない)からHttpHandlerを呼び出すと、ファイル名とサイズは正しく設定されますが、ダウンロードされるファイルバイトはゼロになります。何か案は?HttpHandlerゼロ長さのバイトを返す[]

+1

コードを投稿し、Wiresharkで何が起こるかを調べる – Andomar

答えて

1

だからここで取り上げる。 multipart range handlerを作成しました(コンテンツをiPhoneやAdobe ReaderなどにストリーミングするためにRFCを実装する必要があります)。この仕様では、クライアントが配列全体ではなくバイトの範囲を要求したときに、ファイルの処理を有効にすることが想定されています。私のハンドラの問題は、クライアントがBLOB全体を望んだときに発生しました。

if (context.Request.Headers[HEADER_RANGE] != null) 
{ 
    ... 
} 
else 
{ 
    context.Response.ContentType = contentItem.MimeType; 
    addHeader(context.Response, HEADER_CONTENT_DISPOSITION, "attachment; filename=\"" + contentItem.Filename + "\""); 
    addHeader(context.Response, HEADER_CONTENT_LENGTH, contentItem.FileBytes.Length.ToString()); 
    context.Response.OutputStream.Write(contentItem.FileBytes, 0, contentItem.FileBytes.Length); 
} 

私が含まれるように忘れてしまった:

context.Response.Flush(); 

コード行を追加した後、それが本番環境で働き始めました。しかし、これはサーバー上で動作していて、どんなクライアントでも動作していないことは非常に奇妙です。それがなぜ起こるのか誰にも分かりますか?

関連する問題