2012-04-26 5 views
0

イメージを返すサービスを作成してHttpWebRequestを作成するコントローラを作成しようとしています。私は、このイメージをFileResultとして返したいと思います。それをどうやって行うのですか?私は以下のコードを試してみましたが、それは代わりに、完全な画像の破損したイメージを返します。MVC ASP.NETレスポンスを返します。FileResultStreamとしてのGetResponseStream()

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

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

おかげ

+0

私は同様の問題があった:

は、この他の質問を参照してください。この投稿は役に立ちます:http://stackoverflow.com/questions/9185494/securityexception-when-calling-graphics-drawimage –

+0

私はHttpContext.Response.OutputStreamを直接使用することを避けようとしています。 – Matt

+0

「それはうまくいかない」と言っているのは、車の整備士に行って「それは面白い騒音をする」と言います。 –

答えて

4

をあなたは「それは動作しません」どのように言及しなかったので、私はあなたを伝えることができるすべてがあります一般的にあなたがやっていることはうまくいくはずです。しかし、私は、応答ストリームが実際に読み取られる場所が不明です。使用の中にリターンを入れているので、実際にストリームが読み込まれる前にストリームが破棄されている可能性があります。 usingステートメントを除去し、ちょうどこのような何かをやってみてください。

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

を問題が解決しない場合、その応答は、実際にコンテンツ・タイプ、および有効なストリームを返していることを確認します。

EDIT:

私が正しかったことを思われる、ファイルストリームは、あなたが使用してそれを包む場合、それは読まれる前に閉じます。 Fileはストリームを処理する際にストリームを破棄することを心配する必要はありません。

How do I dispose my filestream when implementing a file download in ASP.NET?

関連する問題