2016-07-25 5 views
0

ASP .NET WEB APIによって返されるファイルの名前を設定します。現在、URLで渡されているパラメータの名前で返されます。しかし、私はABC.JSONASP .NET Web APIによって返されるファイル名を設定する

public class NewTestController : ApiController 
{ 
public string Getdetails([FromUri] string[] id) 
{using (OracleConnection dbconn = new OracleConnection("DATA SOURCE=J;PASSWORD=C;PERSIST SECURITY INFO=True;USER ID=T")) 
    { 
     var inconditions = id.Distinct().ToArray(); 
     var srtcon = string.Join(",", inconditions); 
     DataSet userDataset = new DataSet(); 
     var strQuery = @"SELECT 
         * from STPR_STUDY where STPR_STUDY.STD_REF IN (" + srtcon + ")"; 
     OracleCommand selectCommand = new OracleCommand(strQuery, dbconn); 
     OracleDataAdapter adapter = new OracleDataAdapter(selectCommand); 
     DataTable selectResults = new DataTable(); 
     adapter.Fill(selectResults); 
     return JsonConvert.SerializeObject(selectResults); 
}}} 

として返されるその後、必要な場合、私には、Content-処分を使って他のフォーラムで見ましたが、私はコードでHTTPResponseはを使用していません。どのようにこれを行うことができます。おかげ

は私が

OracleCommand selectCommand = new OracleCommand(strQuery, dbconn); 
      OracleDataAdapter adapter = new  OracleDataAdapter(selectCommand); 
      DataTable selectResults = new DataTable(); 
      adapter.Fill(selectResults); 
      string result = JsonConvert.SerializeObject(selectResults); 
      HttpResponseMessage response = new HttpResponseMessage(); 
      response.StatusCode = HttpStatusCode.OK; 
      response.Content = new StreamContent(result); 
      response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
      { 
       FileName = "Abc.JSON" 
      }; 
    return(result); 

以下のようにしようとしたが、それは、StreamConent

+1

あなたのコントローラから 'string'を返します。あなたは少なくとも 'IHttpActionResult'を使うべきですが、ファイル名を設定するのに' HttpResponseMessage'を使うべきです。 –

+0

Teo van kot、HTTPResponseMessageを使って試しましたが、StreamConentで無効な引数がいくつかあります。私は最初のWeb APIを作成しています – trx

+0

シリアル化されたDataTableを返すことはAPIからは意味がありません。クライアント側ではどのような結果が得られますか? – Win

答えて

1

でいくつかの無効な引数を持っているあなたが好きRequestオブジェクトのCreateResponseメソッドを使用することができるための最良のオーバーロードされたメソッドの試合を言っStreamContentにエラーがスローされます

public HttpResponseMessage Get() 
    { 
     string fileName = "abc.json"; 
     return Request.CreateResponse(HttpStatusCode.OK, fileName); 
    } 

編集以下1:

string contentDisposition = "inline; filename=abc.json"; 
    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, byteInfo, MediaTypeHeaderValue.Parse("application/json")); 
    response.Content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse(contentDisposition); 
    return response; 
+0

しかし、私はDataTableをJSONに変換しています。だから私は文字列でそれらを返すことはありません。私は申し訳ありません、私は新しくてほとんど詰まっていません。 – trx

+0

文字列であっても、HttpResponseMessageを使用してクライアントにデータを返す必要があります。あなたが助けを必要とする場合、クライアント側でそれを使用する方法を教えてください – Paresh

+0

'DataTable selectResults = new DataTable(); adapter.Fill(selectResults); 文字列result = JsonConvert.SerializeObject(selectResults); HttpResponseMessageレスポンス=新しいHttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; var fileName = "abc.json"; return Request.CreateResponse(HttpStatusCode.OK、fileName); '私はこのコードを試して、ABC.JSONとして内部にデータを持つNewTest.JSOnとしてファイルを開きます。 – trx

関連する問題