2017-12-05 8 views
-2

データベースから連結スタイルの文字列からファイル(CSSタイプ)をダウンロードしたいと思います。指定されたスタイルストリングで作成された新しいファイルを返したいhttp取得要求に戻るasp.netのスタイル文字列からCSSファイルをダウンロードするにはweb api

+2

の可能性のある重複した[ApiControllerで生の文字列を返す方法に?](https://stackoverflow.com/questions/14046417/how-to-return-raw-string-with-apicontroller) – Markus

+0

@markus私はこれらの投稿をすべてチェックしてここに質問を投稿しました。あなたのコメントのおかげで –

+0

[質問]を読んで、正確に何をしようとしているのか分からない人としてあなたのonelinerを読んでください。質問は意味をなさない。 「ダウンロード」とはどういう意味ですか? Web APIからHTTPリクエストを発行するか、ダウンロード用のファイルを提供しますか?まさに「スタイル・ストリング」とは何ですか?そのスタイル文字列はどのようにファイルに関連していますか? – CodeCaster

答えて

0

返品オブジェクトは、IDisposableオブジェクトのいずれかまたは両方を使用している可能性がありますが、遅く返却します(usingステートメントを使用)。

異なり、あなたの記憶を管理する - 手動で適切な場合にはstream.Dispose()httpResponseMessage.Dispose()に呼び出しを行う - 多分あなたのクラスのデストラクタで、それはガベージコレクタによって対処だとあなたはでの作業が終了したら、私の経験でHttpResponseMessageが破棄必要はありませんが、それ。例コード:

`` ` バイト[] textAsBytes = Encoding.Unicode.GetBytes(concatenatedStyles);

 using(MemoryStream stream = new MemoryStream(textAsBytes)) { 
      var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK); 
      httpResponseMessage.Content = new StreamContent(stream); 
      httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { 
       FileName = "main-theme.scss" 
      }; 
      httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/css"); 

      return ResponseMessage(httpResponseMessage); 
     } 

`` `

あなたはあまりにもMemoryStreamを使用して周りを削除する必要があるかもしれませんが、私は私のシステム上でコードをコンパイルすることはできませんように100%わかりません。

-2
ResponseMessageResult responseMessageResult; 

using (MemoryStream stream = new MemoryStream(textAsBytes)) 
using (HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)) 
{ 
    httpResponseMessage.Content = new StreamContent(stream); 
    httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
    { 
     FileName = "main-theme.scss" 
    }; 
    httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/css"); 

    responseMessageResult = ResponseMessage(httpResponseMessage); 
} 

return responseMessageResult; 
関連する問題