tutorial net ihttpactionresult asp c# asp.net-core .net-core asp.net-core-webapi

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 .