Mieux retourner HttpResponseMessage avec StreamContent à l'intérieur.
Ici est un exemple:
public HttpResponseMessage GetFile(string id)
{
if (String.IsNullOrEmpty(id))
return Request.CreateResponse(HttpStatusCode.BadRequest);
string fileName;
string localFilePath;
int fileSize;
localFilePath = getFileFromID(id, out fileName, out fileSize);
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));
response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = fileName;
return response;
}
UPD de commentaire par patridge:
Quelqu'un d'autre devrait obtenir ici à la recherche d'envoyer une réponse à partir d'un tableau d'octets au lieu d'un fichier, vous allez avoir à utiliser de nouvelles ByteArrayContent(someData) au lieu de StreamContent (voir ici).