1

画像を返すサービスに対してHttpWebRequestを作成および作成するコントローラーを作成しようとしています。次に、この画像をFileResultとして返します。どうすればそれを行うことができますか。以下のコードを試しましたが、完全な画像ではなく破損した画像が返されます。

public FileResult SomeAction()
{
    var request = Make some request here

    using (var response = (HttpWebResponse)request.GetResponse())
    {
        string contentType = response.ContentType;
        return File(response.GetResponseStream(),contentType);
    }
}

ありがとう

4

1 に答える 1

4

あなたは「それがうまくいかない」と言うことができないので、私があなたに言うことができるのは、一般的にあなたがしていることはうまくいくはずだということだけです。ただし、応答ストリームが実際にどこで読み取られるかはわかりません。使用中に返品を配置しているため、ストリームが実際に読み取られる前にストリームが破棄されている可能性があります。usingステートメントを削除して、次のようにしてみてください。

var response = request.GetResponse();
File(response.GetResponseStream(), response.ContentType);

それが機能しない場合は、応答が実際にコンテンツタイプと有効なストリームを返していることを確認してください。

編集:

私が正しかったように思われます。usingでラップすると、ファイルストリームは読み取られる前に閉じられます。Fileはストリームの処理が完了するとストリームを破棄するため、ストリームの破棄について心配する必要はありません。

この他の質問を参照してください:

ASP.NETでファイルのダウンロードを実装するときにファイルストリームを破棄するにはどうすればよいですか?

于 2012-04-26T22:42:08.467 に答える