2017-01-17 2 views
0

J'ai une extrémité Web API 2 POST qui prend un paramètre, interroge la base de données et renvoie une chaîne XML en guise de réponse.Web API 2, chaîne de retour sous la forme d'un fichier

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

Comment renvoyer le fichier XML en tant que fichier à la place?

+0

Cela pourrait être utile http://stackoverflow.com/questions/30125702/how-to-return-a-file- de-web-api-controller –

Répondre

0

figured it out moi, mais je l'espère, il y a un moyen plus simple -

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; 
}