c# - net - ihttpactionresult return json
Devolver archivo en ASP.Net Core Web API (1)
Si se trata de ASP.net-Core, está mezclando versiones de API web.
Haga que la acción devuelva un
IActionResult
derivado porque en su código actual el marco trata
HttpResponseMessage
como modelo.
[Route("api/[controller]")]
public class DownloadController : Controller {
//GET api/download/12345abc
[HttpGet("{id}"]
public async Task<IActionResult> Download(string id) {
Stream stream = await {{__get_stream_based_on_id_here__}}
if(stream == null)
return NotFound(); // returns a NotFoundResult with Status404NotFound response.
return File(stream, "application/octet-stream"); // returns a FileStreamResult
}
}
Problema
Quiero devolver un archivo en mi ASP.Net Web API Controller, pero todos mis enfoques devuelven el
HttpResponseMessage
como JSON.
Código hasta ahora
public async Task<HttpResponseMessage> DownloadAsync(string id)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent({{__insert_stream_here__}});
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return response;
}
Cuando llamo a este punto final en mi navegador, la API web devuelve el
HttpResponseMessage
como JSON con el Encabezado de contenido HTTP configurado en
application/json
.