2017-01-17 11 views
0

パラメータを受け取り、データベースを照会し、応答としてXML文字列を返すWeb API 2 POSTエンドポイントがあります。Web API 2、ファイルとして文字列を返します

public async Task<IHttpActionResult> Post(long groupId) 
{ 
    People people = await _someService.GetPeople(groupId); 
    XElement peopleXml = _xmlService.ConverToXml(people); 
    return Ok(peopleXml); 
} 

代わりにxmlをファイルとして返すのですか?

+0

これは役に立つことができhttp://stackoverflow.com/questions/30125702/how-to-return-a-file- from-web-api-controller –

答えて

0

は自分自身をそれを考え出したが、私は簡単な方法があると願っています -

public async Task<IHttpActionResult> Post(long groupId) 
{ 
    People people = await _someService.GetPeople(groupId); 
    XElement peopleXml = _xmlService.ConverToXml(people); 
    byte[] toBytes = Encoding.Unicode.GetBytes(peopleXml.ToString()); 

    var stream = new MemoryStream(toBytes); 

    var result = new HttpResponseMessage(HttpStatusCode.OK) 
    { 
     Content = new StreamContent(stream) 
    }; 
    result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") 
    { 
     FileName = "test.txt" 
    }; 
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); 

    var response = ResponseMessage(result); 
    return response; 
} 
関連する問題