I have an ASP.NET Web API action which creates a file and returns a stream content:
public HttpResponseMessage Get(string filePath)
{
// create file
var file = FileConverter.GenerateExcelFile(filePath);
var stream = new FileStream(filePath, FileMode.Open);
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = Path.GetFileName(filePath);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return result;
}
I would like to use HttpClient to download the returned file. Here's what I have now:
client.GetAsync(address).ContinueWith(
(requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
// response.EnsureSuccessStatusCode();
response.Content.ReadAsStreamAsync().ContinueWith(
(readTask) =>
{
var stream = readTask.Result;
});
});
How do I force the actual download after getting the result?
Edit: I'm using ASP.NET 4.0 WebForms.