1

ファイルを取得するために Web サービスを呼び出すカスタム HttpHandler があります。テストでは、実稼働 Web サービスを呼び出し、HttpHandler がファイルを正しく返します。サーバー上の本番環境でテストすると、同様に機能します。ただし、(サーバー上ではなく) リモート クライアントから HttpHandler を呼び出すと、ファイル名とサイズは正しく設定されますが、ダウンロードされるファイル バイトはゼロになります。何か案は?

4

1 に答える 1

1

これが取引です。マルチパート範囲ハンドラーを作成しました(iPhone や Adob​​e 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();

そのコード行を追加した後、本番環境で動作し始めました。ただし、これがクライアントではなくサーバーで機能していたのは非常に奇妙です。それがなぜなのかを明らかにできる人はいますか?

于 2009-05-23T19:20:18.643 に答える